从Object Collection返回Property数组

时间:2011-07-19 12:58:34

标签: c#

我有一个具有这种结构的课程:

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的值是什么......我想要该属性的不同值

3 个答案:

答案 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的集合。

问候。