Return 基于数组中某些属性的唯一(不同)元素
Return only unique(distinct) element based on certain properties from an array
我正在寻找一种方法 return 仅在数组中使用不同的元素,但必须基于某个 属性,数组的其他属性可以复制。
例如:
var elements = [{id:123,name:"abc",start:12:00:00},{id:123,name:"abc",start:12:00:00},
{id:123,name:"abc",start:1:00:00},{id:123,name:"def",start:12:00:00}]
我们只想 return 基于唯一开始时间和名称的结果:
[{id:123,name:"abc",start:12:00:00},{id:123,name:"abc",start:1:00:00},{id:123,name:"def",start:12:00:00}]
每个元素的 属性 名称或开始必须不同 {id:123,name:"abc",start:12:00:00} => 是 returned只有一次,因为有两个元素具有相同的名称和开始。
我寻找 DistinctBy 功能,但它不允许我使用该功能。只有 Distinct() 函数。
最简单的方法是使用 GroupBy
,因此如果您想要一个独特的名称或开头,您可以这样做:
var elements = [
{id:123,name:"abc",start:12:00:00},
{id:123,name:"abc",start:12:00:00},
{id:123,name:"abc",start:1:00:00},
{id:123,name:"def",start:12:00:00}
];
var unique = elements
.GroupBy(e => new {e.name, e.start})
.Select(g => g.First())
.ToArray(); // or ToList, or just leave it as an IEnumerable
我正在寻找一种方法 return 仅在数组中使用不同的元素,但必须基于某个 属性,数组的其他属性可以复制。 例如:
var elements = [{id:123,name:"abc",start:12:00:00},{id:123,name:"abc",start:12:00:00},
{id:123,name:"abc",start:1:00:00},{id:123,name:"def",start:12:00:00}]
我们只想 return 基于唯一开始时间和名称的结果:
[{id:123,name:"abc",start:12:00:00},{id:123,name:"abc",start:1:00:00},{id:123,name:"def",start:12:00:00}]
每个元素的 属性 名称或开始必须不同 {id:123,name:"abc",start:12:00:00} => 是 returned只有一次,因为有两个元素具有相同的名称和开始。
我寻找 DistinctBy 功能,但它不允许我使用该功能。只有 Distinct() 函数。
最简单的方法是使用 GroupBy
,因此如果您想要一个独特的名称或开头,您可以这样做:
var elements = [
{id:123,name:"abc",start:12:00:00},
{id:123,name:"abc",start:12:00:00},
{id:123,name:"abc",start:1:00:00},
{id:123,name:"def",start:12:00:00}
];
var unique = elements
.GroupBy(e => new {e.name, e.start})
.Select(g => g.First())
.ToArray(); // or ToList, or just leave it as an IEnumerable