c# - LINQ:根据列值选择重复行

标签 c# linq entity-framework syntax

我试图在我的 DataGrid 中显示那些共享相同列值的行。

例如,对于具有相同姓氏的人,我试过这个:

dataGrid.ItemsSource = _dataContext.Addresses.GroupBy(a => a.SurName).Where(grp => grp.Count() > 1).Select(grp => grp.Key);

这似乎有效,因为我的 WPF DataGrid 在此命令之后包含行...最终它只显示空行,因为没有列填充值。

或者我对具有相同城市的人进行了尝试:

dataGrid.ItemsSource = _dataContext.Addresses.GroupBy(a => a.City).Where(grp => grp.Count() > 1).Select(grp => grp.Key).Select(a => a);

有什么正确的方法可以做到这一点吗?

最佳答案

您只是在示例中选择了键:

dataGrid.ItemsSource = _dataContext.Addresses.GroupBy(a => a.SurName).Where(grp => grp.Count() > 1).Select(grp => **grp.Key**);

我假设您要做的是选择整行:

dataGrid.ItemsSource = _dataContext.Addresses.GroupBy(a => a.SurName).Where(grp => grp.Count() > 1).SelectMany(grp => grp.Select(r=>r));

比较名字和姓氏:

dataGrid.ItemsSource = _dataContext.Addresses.GroupBy(a => new Tuple<String, String>(a.ForeName, a.SurName)).Where(grp => grp.Count() > 1).SelectMany(grp => grp.Select(r=>r));

编辑:对于 L2E,您可以(我认为)使用匿名类型:

dataGrid.ItemsSource = _dataContext.Addresses.GroupBy(a => new { a.ForeName, a.SurName }).Where(grp => grp.Count() > 1).SelectMany(grp => grp.Select(r=>r));

以上内容可能不正确 - 不能 100% 确定。

关于c# - LINQ:根据列值选择重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9231577/

相关文章:

C#:带有构造函数参数的对象数组

C# 对象按组排序,使用 linq

c# - LINQ - EF Core - 返回嵌套列表中包含两个对象(由属性引用)的对象

c# - 使用 await 从 linq 语句中选择

c# - 使用 Code First EF6 的 Multi-Tenancy

c# - 使用 .Include 时, Entity Framework 不会加载相关实体,除非上下文知道相关实体

mysql - 无法创建实体数据模型 - 使用 MySql 和 EF6

c# - View 的创建应该是 View 或 ViewModel [MVVM] 的一部分?

c# - 如何在用户控件中创建事件并在主窗体中处理它?

c# - C# using 语句、SQL 和 SqlConnection