我希望找到数据库中所有拥有重复电话号码的经销商。然后,我想在报告中列出所有经销商信息。我无法使用select语句来填充经销商记录属性。
如经销商名称地址等第四名。我认为这是因为该组织限制了它。
var dealers = _db.Dealers
.Where(x => x.Active)
.GroupBy(x => x.Phone)
.Select(x => new { Dealer = x.Key, Phone = x.Count()})
.Where(x => x.Phone > 1);
编辑: 所需的输出将是每个经销商的列表。我希望拥有相同电话号码的经销商能够彼此相邻。我不希望任何基于电话号码的重复记录。
答案 0 :(得分:0)
只需将组中的第一项添加到最后一个选择:
var dealers = _db.Dealers
.Where(x => x.Active)
.GroupBy(x => x.Phone)
.Select(x => new { Dealer = x.Key, Phone = x.Count(), FirstItem = x.First()})
.Where(x => x.Phone > 1);
结果将具有FirstItem
属性
或者如果您想要所有平面列表中的项目,您可以将Where
直接应用于分组:
var dealers = _db.Dealers
.Where(x => x.Active)
.GroupBy(x => x.Phone)
.Where(g => g.Count() > 1);
.SelectMany(g => g) // flat list of Dealers
答案 1 :(得分:0)
你没有确切地说出预期的输出和实际输出是什么,所以我不知道你有什么意思'遇到麻烦'。但我发现了一个可能令人困惑的事情:
您正在通过电话进行分组(.GroupBy(x => x.Phone)
)。
因此当您new { Dealer = x.Key, ...
x.Key
时,{{1}}会引用该群组的电话号码。