2016-05-22 30 views
0

我创建了这个sql查询,但我很难将其转换为linq lambda。我对linq相当陌生。C#lambda内部连接最大

Select t1.* Fom msgs as t1 
Inner join(
    Select fromUser, MAX(ts) as mts 
    From msgs 
    Where toUser='aUserName' AND isDeleted='0' 
    Group By fromUser 
)t2 On (t2.fromUser=t1.fromUser and t1.ts = t2.mts) Order By ts desc; 

回答

1

你可以做到同样的事情OrderByDescending(LINQ扩展)和GroupBy

var messages = msg.ToList(); 
var results = messages.Where(x=> x.toUser = "aUserName" AND isDeleted="0") 
    .GroupBy(x=>x.fromUser) 
    .Select(x=> 
    { 
     var maxitem = x.OrderByDescending(y=>y.ts).First(); 
     return new 
     { 
       fromUser = maxItem.fromUser, 
       ts = maxitem.ts, 
       ... // remaining properties. 
     } 
    }) 
    .ToList(); 
+0

有了这个,我得到了“带有语句正文的lambda表达式不能转换为表达式树” – LostTragedy

+0

这是Linq到Sql的吗? –

+0

是的,我将linq连接到sql。 – LostTragedy