如何使用Linq从对象列表中获取唯一的属性列表?

时间:2009-02-20 05:05:14

标签: linq class list c#-3.0 properties

我正在尝试使用Linq返回一个id列表,给出id为属性的对象列表。我希望能够在不循环遍历每个对象的情况下完成此操作并拉出我找到的唯一ID。

我有一个MyClass类型的对象列表,这个类的一个属性是一个ID。

public class MyClass
{
  public int ID { get; set; }
}

我想要做的是写一个Linq查询来返回那些ID的列表

如果给出IList<MyClass>以便它返回IEnumerable<int>个ID,我该怎么做呢?

我确信必须能够使用Linq在一行或两行中执行此操作,而不是循环遍历MyClass列表中的每个项目并将唯一值添加到列表中。

非常感谢任何创建优雅解决方案的帮助!

5 个答案:

答案 0 :(得分:300)

IEnumerable<int> ids = list.Select(x=>x.ID).Distinct();

答案 1 :(得分:28)

使用Distinct operator

var idList = yourList.Select(x=> x.ID).Distinct();

答案 2 :(得分:13)

使用 Linq Distinct()扩展程序:

var idList = (from x in yourList select x.ID).Distinct();

答案 3 :(得分:3)

        int[] numbers = {1,2,3,4,5,3,6,4,7,8,9,1,0 };
        var nonRepeats = (from n in numbers select n).Distinct();


        foreach (var d in nonRepeats)
        {

            Response.Write(d);
        }

输出

1234567890

答案 4 :(得分:2)

采用Distinct时,我们也必须转换为IEnumerable。如果列表是模型,则需要编写这样的代码

 IEnumerable<T> ids = list.Select(x => x).Distinct();
相关问题