【发布时间】:2020-12-22 07:39:00
【问题描述】:
我正在努力通过使用 Entity Framework Core 从数据库中查询 B 列的重复项来获取 A 列的值。示例:
Column A | Column B
--------------------
A | 1
B | 1
C | 2
D | 2
E | 3
我应该得到输出:
A,B,C,D
我打算用它来填充下拉列表。
我试过了:
Options = _context.table.AsEnumerable()
.GroupBy(s => new{ s.columnA,s.columnB)
.Where(o => o.columnB.Count() > 1)
.Select(o => new SelectListItem
{
Value = o.Key.columnA,
Text = o.Key.columnB
}.ToList()
【问题讨论】:
-
你的问题不清楚。无论您使用 o.columnB.Count() > 1 还是 o.columnB > 1,都无法将 A、B、C、D 作为输出。您应该在 columnB 上对数据进行分组,然后检查组元素的计数。@987654325 @
-
这能回答你的问题吗? Linq with group by having count
-
@DragandDrop 不,该解决方案仅显示我正在检查重复项的列(在本例中为 columnB)。我需要显示在 B 列中有重复项的 A 列项目。
-
正如Karan所说,既然要根据columnB获取重复记录,GroupBy语句应该像这样
.GroupBy(s=>s.columnB),然后,您可以使用SelectMany方法找到子项,@ 987654327@ -
正确,但是
SelectMany()占用了太多内存。我有一个相当大的数据库。
标签: c# linq asp.net-core entity-framework-core