5

我试图在我的 DataGrid 中显示这些行,它们共享相同的列值。

例如,对于姓氏相同的人,我尝试了这个:

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

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

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

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

有没有合适的方法来做到这一点?

4

1 回答 1

9

您仅在示例中选择键:

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% 肯定的。

于 2012-02-10T17:06:18.257 回答