使用c#在LINQ查询中获取连接表最大值的最有效方法

本文关键字:最大值 方法 有效 连接 获取 LINQ 查询 使用 | 更新日期: 2023-09-27 18:14:05

我正试图找到最有效的方法来获得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
                         });

使用c#在LINQ查询中获取连接表最大值的最有效方法

看起来你可能只是想要一个组连接:

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到对象的行为,所以手指交叉抽象保持…