Как написать этот запрос в LINQ? - PullRequest
0 голосов
/ 30 мая 2009

Следующий запрос используется для получения категорий и по одной новости для каждой категории. Как я могу написать этот запрос, используя LINQ

SELECT * FROM News n where n.NewsID IN 
(SELECT TOP 1 NewsID FROM News v
WHERE v.CategoryID = n.CategoryID 
ORDER BY CreatedOn DESC)

Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 30 мая 2009

Не проверено, но попробуйте что-то вроде этого:

using (var db = new YourDataContext())
{
   var results = from n in db.News 
                 let v = db.News
                 where n.NewsId == v.Where(c=>c.CategoryId == n.CategoryId)
                    .OrderByDescending(o=>o.CreatedOn).First()
                 select n;
}
0 голосов
/ 30 мая 2009

Вот это в VB:

Using db = New YourDataContext()
   Dim results = From n In db.News _
       Let v = db.News _
       Where n.NewsId = v.Where(Function(c) c.CategoryId = n.CategoryId).OrderByDescending(Function(o) o.CreatedOn).First() _
       Select n
End Using

Преобразовано с: http://www.developerfusion.com/tools/convert/csharp-to-vb/

0 голосов
/ 30 мая 2009
var q = from n in dc.News
        group n by n.CategoryId into g
        let ti = g.OrderByDescending(x => x.CreatedOn).FirstOrDefault()
        where ti != null
        select ti;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...