我正在尝试找到在LINQ中连接表中获取最新记录的最有效方法。
此查询可能会处理数千条记录,因此我不想执行子查询。
我需要来自项目的所有内容,但只需要“Notes”表中的最新日期,其字段名称为SubmittedDate。
var items = (from t1 in db.Items
from t2
in db.Notes
.Where(o => (t1.Item_ID == o.Item_ID))
select new ItemModel
{
Name = t1.Name,
MostRecentUpdate = t2.SubmittedDate <== Need max value in model
});
非常感谢任何帮助。
答案 0 :(得分:5)
看起来你可能只想要一个小组加入:
var items = from t1 in db.Items
join t2 in db.Notes on t1.Item_ID equals t2.Item_ID into notes
select new ItemModel
{
Name = t1.Name,
MostRecentUpdate = notes.Max(x => (DateTime?) x.SubmittedDate)
};
如果匹配的MostRecentUpdate
行中没有非空日期,则Notes
应为null。至少,这就是LINQ to Objects的行为,所以手指越过了抽象......