Если у меня есть этот SQL-запрос:
"выберите отличный верх 1 'PostId' = isnull (RootPost, Id), ДобавленоDateTimeUtc из Post Post byDateTimeUtc desc"
И мне нужно перечислить результаты с помощью DataContext. То есть, как отправить этот SQL-код в DataContext и проанализировать результат?
Как мне это сделать? Как выглядит метод, который возвращает результат анонимно?
Для выполнения SQL-запросов, которые будут возвращать результаты, сформировать известный объект, вы можете использовать метод DataContext.ExecuteQuery:
IEnumerable<Post> = dataContext.ExecuteQuery<Post>(sqlQuery);
Для пользовательских наборов результатов метод Execute не может вывести и создать анонимный тип, но вы все равно можете создать класс, который содержит поля, выбранные в пользовательском запросе SQL.
class CustomPostResult // custom type for the results
{
public int? PostId { get; set; }
public DateTime PostedDateUtcTime { get; set; }
}
//...
string sqlQuery = @"SELECT DISTINCT TOP 1 'PostId' = ISNULL(RootPost,Id),
PostedDateTimeUtc FROM Post ORDER BY PostedDateTimeUtc DESC";
IEnumerable<CustomPostResult> = dataContext.
ExecuteQuery<CustomPostResult>(sqlQuery);
Проверьте эту статью:
Вы можете попробовать выражение LINQ. Возможно, что-то подобное должно работать.
var results = (from post in dc.Posts
orderby post.PostedDateUtcTime descending
select new Post
{
RootPost = (post.RootPost == null) ? post.Id : post.RootPost
}).Distinct<Post>().Take<Post>(1);
Я на самом деле не запускал это, поэтому, если кто-нибудь найдет проблему, я исправлю это.
Я обычно выводю результаты в список < > объекта LINQ, который вы используете.
List<Post> posts = new List<Post>();
using(your datacontext)
{
var result = // Your query
posts = result.ToList():
}
return posts;