C #: LINQ to SQL: выполнение литерального запроса

2

Если у меня есть этот SQL-запрос:

"выберите отличный верх 1 'PostId' = isnull (RootPost, Id), ДобавленоDateTimeUtc из Post Post byDateTimeUtc desc"

И мне нужно перечислить результаты с помощью DataContext. То есть, как отправить этот SQL-код в DataContext и проанализировать результат?

Как мне это сделать? Как выглядит метод, который возвращает результат анонимно?

Теги:
linq-to-sql

3 ответа

4
Лучший ответ

Для выполнения 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);

Проверьте эту статью:

0

Вы можете попробовать выражение 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);

Я на самом деле не запускал это, поэтому, если кто-нибудь найдет проблему, я исправлю это.

0

Я обычно выводю результаты в список < > объекта LINQ, который вы используете.

List<Post> posts = new List<Post>();

using(your datacontext)
{
  var result = // Your query
  posts = result.ToList():
}

return posts;  

Ещё вопросы

Сообщество Overcoder
Наверх
Меню