2016-05-22 14 views
0

私はこのSQLクエリを作成しましたが、それをlinqラムダに変換するのは苦労しています。私はかなり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

これで、文のボディが式ツリーに変換できないラムダ式が得られます – LostTragedy

+0

このLinqはSqlですか? –

+0

はい、linqをsqlに接続しています。 – LostTragedy