代码之家  ›  专栏  ›  技术社区  ›  mezoid

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

  •  190
  • mezoid  · 技术社区  · 16 年前

    我试图使用LINQ返回一个id列表,给定一个id是属性的对象列表。我希望能够做到这一点,而无需遍历每个对象并提取我找到的唯一id。

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

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

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

    IList<MyClass> IEnumerable<int> 关于ID?

    我确信,使用LINQ在一两行中完成这项工作一定是可能的,而不是循环遍历MyClass列表中的每个项目并将唯一值添加到列表中。

    5 回复  |  直到 4 年前
        1
  •  340
  •   Marc Gravell    16 年前
    IEnumerable<int> ids = list.Select(x=>x.ID).Distinct();
    
        2
  •  30
  •   Maksim Vi.    10 年前

    使用 Distinct operator :

    var idList = yourList.Select(x=> x.ID).Distinct();
    
        3
  •  13
  •   Peter Mortensen icecrime    4 年前

    使用直 LINQ ,与 Distinct() 扩展名:

    var idList = (from x in yourList select x.ID).Distinct();
    
        4
  •  3
  •   Peter Mortensen icecrime    4 年前

    服用时 独特 ,我们也必须转换到IEnumerable。如果列表<T>model,这意味着你需要编写这样的代码:

     IEnumerable<T> ids = list.Select(x => x).Distinct();
    
        5
  •  2
  •   Peter Mortensen icecrime    4 年前
    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

    推荐文章