亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在C#中過濾集合

在C#中過濾集合

C#
慕田峪7331174 2019-11-29 10:45:44
我正在尋找一種非??焖俚姆椒▉磉^濾C#中的集合。我目前正在使用通用的List <object>集合,但是如果它們的性能更好,則可以使用其他結構。當前,我只是創建一個新的List <object>并循環遍歷原始列表。如果過濾條件匹配,我將副本放入新列表。有一個更好的方法嗎?有沒有一種方法可以進行過濾,所以不需要臨時列表?
查看完整描述

3 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

如果您使用的是C#3.0,則可以使用linq,效果更好,更優雅:


List<int> myList = GetListOfIntsFromSomewhere();


// This will filter out the list of ints that are > than 7, Where returns an

// IEnumerable<T> so a call to ToList is required to convert back to a List<T>.

List<int> filteredList = myList.Where( x => x > 7).ToList();

如果找不到.Where,則意味著您需要using System.Linq;在文件頂部導入。


查看完整回答
反對 回復 2019-11-29
?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

您可以使用IEnumerable消除臨時列表的需要。


public IEnumerable<T> GetFilteredItems(IEnumerable<T> collection)

{

    foreach (T item in collection)

    if (Matches<T>(item))

    {

        yield return item;

    }

}

其中Matches是您的過濾方法的名稱。您可以像這樣使用:


IEnumerable<MyType> filteredItems = GetFilteredItems(myList);

foreach (MyType item in filteredItems)

{

    // do sth with your filtered items

}

這將在需要時調用GetFilteredItems函數,在某些情況下,如果您不使用過濾后的集合中的所有項目,則可能會獲得一些良好的性能。


查看完整回答
反對 回復 2019-11-29
  • 3 回答
  • 0 關注
  • 708 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號