我正在使用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>()
?
答案 0 :(得分:1)
一种方法是使用GroupBy
:
var uniquePersons = customers
.GroupBy(c => new Person() {Id = c.Id, Name = c.Name})
.Select(g => g.Key)
.ToList();
答案 1 :(得分:1)
建议的答案或其他SO帖子未返回我需要的结果。这是有效的代码。
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>()
。