2009-05-30 9 views
0

La requête suivante est utilisée pour obtenir des catégories et une nouvelle pour chaque catégorie. Comment puis-je écrire cette requête en utilisant LINQComment écrire cette requête dans 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) 

Merci à l'avance.

Répondre

5

Non testé, mais essayer quelque chose comme ceci:

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

pouvez-vous écrire pour VB? –

+0

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

+0

seule chose qui a eu tort était au-dessus de la déclaration doit être en utilisant (var db = new YourDataContext()) { var résultats = de n dans db.News let v = db.News où n.NewsId == v. Où (c => c.CategoryId == n.CategoryId) .OrderByDescendant (o => o.CreatedOn). First(). NewsId sélectionnez n; } le NewsId manquait à la fin –

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

Ici, il est en 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 

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

+0

J'ai été le premier à mentionner developerfusion ^^ –

+0

Eh bien, je le convertissais et publiais pendant que vous publiiez, juste un problème de "concurrence". :) – andreialecu

+0

remercie Arnis de mentionner developerfusion –

Questions connexes