私はユーザーに関連した項目のリストを持っています。注文したグループの最後のアイテムを取得
各アイテムには日付があります。たとえば、すべてのユーザー
の
私は(日付で)最後の項目を取得したいデータがある場合:
Id1, User1, 1.1.16
Id2, User2, 2.1.16
Id1, User1, 4.1.16
Id4, User2, 3.1.16
Id3, User1, 2.1.16
Id4, User2, 5.1.16
それはユーザーのそれぞれの(日付で)最後の項目を返す必要があります:
Id1 User1 4.1.16
Id4 User2 5.1.16
私のクエリは次のとおりです。
from sf in db.Items
where ...
group i by i.UserId into g
select g.OrderByDescending(s => s.StartDate).FirstOrDefault();
。
すべてのグループとそのアイテムを印刷するとOKと表示され、
の最初のアイテムは各グループの最後のアイテムですが、クエリで返されません。
私は
もg.ToList()
を追加しようとしまし役立つ..didn't g.OrderBy
に変更しようとした...
は、どのように私はすべてのユーザーの最新アイテムを得ることができますか?
イムは
にクエリを変更する場合はそれが私がg.OrderByDescending(S => s.StartDate)
とよりを選択グラム
にi.UserIdで... グループに動作しますグループにループする最初の項目を取る
foreach(クエリのvar g)
{
var last = g.First();あなたは二つのプロパティを持つ匿名型のオブジェクトに各グループを投影し、その後グループを作った
var result = from sf in db.Items
where ...
group i by i.UserId into gr
select new
{
UserId = gr.Key
LatestItem = gr.OrderByDescending(s => s.StartDate)
.FirstOrDefault()
};
:
残念ながら、私は同じリルートを取得しています。私はグループ全体を選択して、私がグループをループするときよりも、その最初のものを選択します。 foreach(var gr in resultQuesry)var last = gr.First(); –