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

标签 c# linq linq-to-sql c#-4.0

我正在尝试找到最有效的方法来获取 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/

相关文章:

c# - 当设置为异步时,是否有人在使用 Ctrl-R、T 运行特定的本地突出显示的测试时遇到问题?

c# - 使用 Autofac 4 和 vNext 自注册库

c# - Entity Framework GroupBy到Sql生成

c# - Linq to Sql - 更新正确的数据上下文

sql-server - LINQ:DataContext Life 和 System.Data.SqlClient.SqlException:超时已过期

c# - WCF 服务 - 编码标准 - 将我的类库放在哪里?

C#:在具有任意维度的数组中设置所有值

c# - 如何从linq中的多个日期列中获取最小值?

c# - 有条件地加入 LINQ?

c# - Linq to SQL 更新数据