這個問題是類似這樣的:從一個表和最新的1行獲取行從關聯的表,在LINQ
LINQ to SQL: GroupBy() and Max() to get the object with latest date
但我有我要回了很多行的表從。它的主鍵被用作第二個表中的外鍵。對於從第一行返回的每一行,我也想要返回(在同一結果集中)最新的(在這種情況下,由日期時間字段排序)1行。
這將如何在LINQ中使用C#構造?
我的最好的是:
var instances = from i in ContextDB.Instances
join p in ContextDB.Points on i.InstanceID equals p.InstanceID
where categoryIDs.Contains(j.CategoryID)
group p by p.InstanceID into latestPoint
select new latestPoint.OrderBy(i => i.Instance.Title).FirstOrDefault();
但是,這顯然是錯誤的。雖然我認爲我正確理解group
,但我不認爲我正確理解into
。
[編輯]爲了避免混淆,我認爲這個問題可以概括爲:「如何從一張表格中的行以及另一張表格中的最新的1行?」
你需要清除你的編輯..我認爲有一個錯字。 – Nix 2010-08-17 13:02:58
有更好的方法來做到這一點,它將開始於實體模型中的關聯/關係。您的模型中的Instances/CategoryInstances/Points是否存在關聯? – Nix 2010-08-17 13:04:03
是的,CategoryInstances - > InstanceID(在兩者中),Instances - > InstanceID上的實例(在兩者中)。模式中有表引用。我將從樣本中刪除涉及CategoryInstances的行,因爲這會導致混淆。 – 2010-08-17 13:10:30