假设我在卫生部工作。我已经处理了食物中毒投诉并将投诉数据存储到多维数组中,如下所示:
Array [0]包含第一个投诉的数据。 Array [0] .ID包含第一个投诉的餐馆ID等等。
在我的数组中,如何提取唯一 5位数ID列表?
有些餐馆可能有50个投诉,有些可能只有1个。我想创建一个列表,列出我投诉数据中显示的所有唯一餐馆ID。
var Unique = array.ID.Distinct();
不起作用。我做错了什么?
答案 0 :(得分:8)
Select()
首先......
var ids = array.Select(o => o.ID).Distinct();
修改强>
嗨,您能否解释一下原因。
首先,让我们谈谈你做错了什么:
var ids = array.ID.Distinct();
ID
,数组中不存在的成员。你要找的是数组中项的ID
。Distinct()
。现在让我们看一下新代码的作用:
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)查找。