如何识别数组中元素的唯一属性?

时间:2013-09-27 17:21:05

标签: c# arrays

假设我在卫生部工作。我已经处理了食物中毒投诉并将投诉数据存储到多维数组中,如下所示:

  1. ID - 餐馆受害者吃的5位数身份证号码
  2. 日期 - 食物中毒日期
  3. 姓名 - 受害者姓名
  4. 年龄 - 受害者年龄
  5. 电话 - 受害者的电话号码
  6. Array [0]包含第一个投诉的数据。 Array [0] .ID包含第一个投诉的餐馆ID等等。

    在我的数组中,如何提取唯一 5位数ID列表?

    有些餐馆可能有50个投诉,有些可能只有1个。我想创建一个列表,列出我投诉数据中显示的所有唯一餐馆ID。

    var Unique = array.ID.Distinct();
    

    不起作用。我做错了什么?

2 个答案:

答案 0 :(得分:8)

Select()首先......

var ids = array.Select(o => o.ID).Distinct();

修改

  

嗨,您能否解释一下原因。

首先,让我们谈谈你做错了什么:

var ids = array.ID.Distinct();
  1. 您尝试引用ID数组中不存在的成员。你要找的是数组中ID
  2. 您尝试在该不存在的成员而不是集合上调用Distinct()
  3. 现在让我们看一下新代码的作用:

    var ids = array.Select(o => o.ID).Distinct();

    Select()生成一个新的枚举,只产生ID个值。 Distinct()生成另一个可枚举,仅产生Select()中的唯一值。

答案 1 :(得分:3)

如果您打算在未来进行查找,请使用HashSet

var hashSet = new HashSet<int>(array.Select(i => i.ID));

这将自动删除重复项,并允许近O(1)查找。