gpt4 book ai didi

c# - 检测重复记录,只选择第一个并用 LINQ/C# 计数

转载 作者:太空狗 更新时间:2023-10-29 20:03:16 26 4
gpt4 key购买 nike

我正在寻求有关使用 C#/LINQ 设计查询以满足以下要求的一些帮助:

我有一个公司列表:-

Id  Name                Email       Address

1 Company A a@a.com abc

2 Company B b@b.com abc

3 Company C c@c.com abc

4 Company D d@d.com abc

5 Company A a@a.com abc

我的目标是根据两个字段检测重复项,在本例中为“姓名”和“电子邮件”。

期望的输出是如下所示的客户列表:

  1. 重复的客户只能显示一次
  2. 应显示相似记录的数量。

所需的重复列表:-

Id  Qty Name        Email       Address

1 2 Company A a@a.com abc (Id/details of first)

2 1 Company B b@b.com abc

3 1 Company C c@c.com abc

4 1 Company D d@d.com abc

最佳答案

如果您明确想在每组重复项中使用最低 ID 的记录,您可以使用

var duplicates = companies
.GroupBy(c => new { c.Name, c.Email })
.Select(g => new { Qty = g.Count(), First = g.OrderBy(c => c.Id).First() } )
.Select(p => new
{
Id = p.First.Id,
Qty = p.Qty,
Name = p.First.Name,
Email = p.First.Email,
Address = p.First.Address
});

如果您不关心使用哪个记录的值,或者如果您的源已经按 ID(升序)排序,您可以放弃 OrderBy 调用。

关于c# - 检测重复记录,只选择第一个并用 LINQ/C# 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13230835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com