簡體   English   中英

HashSet或Distinct用於讀取對象的List <>中的不同屬性值

[英]HashSet or Distinct to read distinct values of property in List<> of objects

這在某種程度上與此相關( 獲取C#列表中的所有唯一項 )問題。

上面的問題是談論一系列簡單的價值觀。 我有一個從第三方Web服務返回的對象:

public class X
{
    public Enum y {get; set;}

}

我有一個列表這些對象List<x> data; ,總共約100條記錄,但可變。 現在我想要屬性y列表中的所有可能值,並且我想綁定它做一個CheckBoxList.DataSource (如果有所不同)。

這是最有效的方法嗎?

我可以想到兩種算法:

var data = HashSet<Enum> hashSet = new HashSet<Enum>(xs.Select(s => s.y));
chkBoxList.DataSource = data;

要么

var data = xs.Select(s => s.y).Distinct();
chkBoxList.DataSource = data;

我的直覺是HashSet,但我不是百分百肯定。

如果有人有任何想法,願意接受更好的想法?

如果是一次性操作 - 使用。 Distinct 如果要HashSet添加元素 - 請使用HashSet

HashSet一個,因為它在構造hashset對象之后保持對象,並且預處理它不需要昂貴的操作。

另一方面,每次枚舉DataSource時都可能會評估Distinct枚舉器,並且將重復刪除重復值的所有工作。

因為他們沒有更好的答案,我將回答我自己的問題。 我決定使用HashSet雖然對於我的結果集大小,性能優勢可能很小。 歸結到它時,從這里獲取的HashSet的定義是:

HashSet是一個包含唯一元素的無序集合。

我想要一個獨特無序值集合 (課程的馬)我也不需要索引,我只想枚舉我的設置。

所以它似乎是最合適的。 將Staffi標記為答案,因為他的信息量最大。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM