我有一个具有这种结构的课程:
public class BusinessObject
{
public int Column1 { get; set; }
public int Column2 { get; set; }
public string Column3 { get; set; }
public int Column4 { get; set; }
}
我有一个这种类型的对象集合,调用BusinessObjectCollection。如果我想要一个仅与Column2不同的值数组......我该怎么办?
如果我不知道我需要的属性...如果我将ColumnTitle作为String ...并且无论ColumnTitle的值是什么......我想要该属性的不同值
答案 0 :(得分:2)
假设您希望结果为IEnumerable<BusinessObject>
,以便Column2
仅 用于实现清晰度,则有两种选择:
IEqualityComparer<BusinessObject>
的方式实施Column2
,并将其传递给Distinct
使用DistinctBy
中的MoreLINQ:
var distinct = original.DistinctBy(x => x.Column2);
显然第二个更简单,但它确实需要一个额外的库(或只复制DistinctBy
的代码)。
答案 1 :(得分:1)
这是让我非常欣赏LINQ的东西:
int[] distinctColumn2 = (from x in BusinessObjectCollection select x.Column2).Distinct().ToArray();
答案 2 :(得分:0)
可以使用纯LINQ分辨。
var result = (from bo in lbo select bo.Column2).Distinct();
其中lbo是BusinessObjects的集合。
问候。