为了账号安全,请及时绑定邮箱和手机立即绑定

使用 LINQ 选择具有唯一 ID 的对象作为另一种对象类型

使用 LINQ 选择具有唯一 ID 的对象作为另一种对象类型

C#
不负相思意 2023-09-24 16:22:55
使用LINQ,我尝试选择唯一的Customer作为Person对象。JSON我在下面的示例中使用数据,但我正在POCO使用C#. 在这个例子中,我选择JSON让事情变得简单。我有以下Customer清单:[  {     "id": 123,     "name: "John Smith",     "transactionDate": "2019-08-21T10:30",     "amount": 8.50  },  {     "id": 234,     "name: "Jane Doe",     "transactionDate": "2019-08-22T18:21",     "amount": 75.00  },  {     "id": 123,     "name: "John Smith",     "transactionDate": "2019-08-26T10:30",     "amount": 10.00  }]我想将独特的客户作为Person对象,结果应该如下所示:[  {     "id": 123,     "name": "John Smith"  },  {     "id": 234,     "name": "Jane Doe"  }]下面应该给我唯一的 ID。var uniqueIds = customers.Select(x => x.id).Distinct();我现在如何Person从中提取唯一的List<Customer>()?
查看完整描述

2 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

这是有效的代码。

var uniquePersons = customers
                        .Select(x => new Person() { Id = x.Id, Name = x.Name })
                        .GroupBy(g => g.Id)
                        .Select(x => x.First())
                        .ToList();

我并不是说这是最好的方法,但这就是给我一个独特的列表的Person原因Customer

我很想听到建议或解释,这是否是处理该问题的最佳方法,或者为什么建议的答案没有产生List<Person>()独特的人。


查看完整回答
反对 回复 2023-09-24
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

一种方法是使用GroupBy

var uniquePersons = customers
    .GroupBy(c => new Person() {Id = c.Id, Name = c.Name})
    .Select(g => g.Key)
    .ToList();


查看完整回答
反对 回复 2023-09-24
  • 2 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信