2009-05-30 3 views
0

Следующий запрос используется для получения категорий и одной новости для каждой категории. Как я могу написать этот запрос, используя LINQКак написать этот запрос в 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) 

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

ответ

5

Не тестировался, но попробовать что-то вроде этого:

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

вы можете написать это для VB? – 2009-05-30 10:36:00

+0

http://www.developerfusion.com/tools/convert/csharp-to-vb/ –

+0

Единственное, что было не так в выше было заявление должно быть с использованием (вар дб = новая YourDataContext()) { вар results = from n in db.News let v = db.News где n.NewsId == v.Where (c => c.CategoryId == n.CategoryId) .OrderByDescending (o => o.CreatedOn). First(). NewsId выберите n; } NewsId отсутствует в конце – 2009-05-30 10:48:36

0
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; 
0

Здесь в 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

Я был первым, кто упомянул developerfusion ^^ –

+0

Ну, я конвертировал его и размещал во время публикации, просто вопрос «параллелизма». :) – andreialecu

+0

благодарит Arnis за упоминание developerfusion – 2009-05-30 10:49:21

Смежные вопросы