【发布时间】:2019-11-21 20:40:13
【问题描述】:
我在实体框架中使用 LINQ 方法编写了这个查询:
var items = db.Items.ToList();
var unique_items = items.OrderBy(c => c.date)
.GroupBy(c => c.title)
.Select(group => group.First()).ToList();
Items 返回这个例如:
id title date
-----------------------
1 car1 02-05-2019
2 car2 02-06-2019
3 car2 02-07-2019
4 car4 02-05-2019
5 car1 02-04-2019
并且 unique_items 应该返回这个:
1 car1 25-10-2019
3 car2 25-10-2019
4 car4 25-12-2019
我只想要独特的标题。
我现在想使用 SQL Server 查询在数据库中创建一个视图,我尝试使用 Group By 和 Distinct 但我不能这样做,因为使用不同于 LINQ 查询有人可以请帮忙?
【问题讨论】:
-
create view your_view_name as Select min(id) as id, title, min(date) as date from your_table group by title
-
@МаксимИванов 这只有在每个 min(id) 和每个 min(date) 指向同一记录时才是正确的。
-
简单的答案是使用 DbContext.Log 来捕获正在生成的 SQL 并使用它。 docs.microsoft.com/en-us/ef/ef6/fundamentals/…
-
@Robert McKee 是的。但他想要独特的头衔——他得到独特的头衔。目前还不清楚必须是什么日期和 ID。我建议花几分钟。
-
@МаксимИванов 他得到了唯一的标题,对于每个唯一的标题,他得到最早的日期,以及与该最早日期对应的 id。这就是他的代码目前所做的。虽然,鉴于他的示例输入,他的示例结果是错误的。
标签: c# sql-server linq entity-framework-6