我正在尝试找到最有效的方法来获取 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
});
如有任何帮助,我们将不胜感激。
最佳答案
看起来您可能只想加入一个群组:
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)
};
现在,如果匹配的 Notes
行中没有非空日期,MostRecentUpdate
应该为空。至少,这就是 LINQ to Objects 的行为,所以手指越过抽象持有...
关于c# - 使用 C# 在 LINQ 查询中获取连接表 MAX 值的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8094802/