2010-10-29 8 views
0

Je suis un peu nouveau pour LINQ et je suis en train de représenter la requête suivante dans LINQ to Entities:Comment représenter cette requête SQL dans LINQ à des entités?

Select * from Cotations CT1 
where CT1.CotationID = iCot_ID and 
     Revision = 
      (select max(revision) 
      from Cotations CT2 
      where CT1.CotationID = CT2.Cotation) 

iCot_ID est un paramètre externe, et Cotations est mon jeu d'entités.

Mieux encore, comment puis-je le représenter comme une association entre deux entités?

Si j'ai les entités suivantes:

Masterlog:

--cotationID

Kote:

--Cotationid

--revision clé,

et pour chaque MasterLog je veux ha ve une association avec Cotation basée uniquement sur CotationIDRevision est maximum pour que cotation (comme dans la demande de recherche ci-dessus)

Merci.

Lukasz

Répondre

0

Je pense que vous avez trop compliqué votre requête. Le ci-dessous devrait le faire.

int iCot_ID = 0; 

var query = (
    from c in context.Coalation 
    .Where(x=>x.Cotationid == iCot_ID) 
    .OrderByDesc(x=>x.Revision) 
) 
.FirstOrDefault(); 

Je ne comprends pas tout à fait la deuxième partie de votre question. S'il vous plaît prenez le temps et expliquez ce que vous voulez faire avec MasterLog.

Voici une supposition:

var cQuery = (
      from c in context.Coalation 
        group c by g.Revision into g 
        orderby g.Revision descending 
      select g.First() 
); 

var mQuery = (
      from m in MasterLog 
      join c in cQuery 
       on m.cotationID equals c.Cotationid 
      where 
       m.Cotationid==iCot_ID 
      select new { 
       MasterLog = m, 
       Cotation = c 
      } 

); 
Questions connexes