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

我试图使用 LINQ 来返回一个 id 列表,给定一个 id 为属性的对象列表。我希望能够做到这一点,而不是循环通过每个对象,并提取出我找到的唯一 ID。

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

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

我想写一个 LINQ 查询返回我这些 ID 的列表。

如何做到这一点,给定一个 IList<MyClass>,使它返回一个 IEnumerable<int>的 id?

我确信使用 LINQ 只需要一两行就可以完成,而不是循环遍历 MyClass 列表中的每个条目并将唯一值添加到列表中。

146907 次浏览
IEnumerable<int> ids = list.Select(x=>x.ID).Distinct();

使用 独特的接线员:

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

使用带有 Distinct()扩展的直接 LINQ:

var idList = (from x in yourList select x.ID).Distinct();
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

当采用 很明显时,我们也必须强制转换为 IEnumable。如果列表是 < T > model,这意味着您需要像下面这样编写代码:

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