簡體   English   中英

從IEnumerable中刪除項目的最佳方法是什么 <SelectListItem> ?

[英]What is the best way to remove items from a IEnumerable<SelectListItem>?

我有一個asp.net-mvc網站,我正在嘗試使用雙列表框插件

我有一個數組

IEnumerable<SelectListItem> allItems:

我有一系列的Ints

IEnumerable<int> selectedIds;

表示某人過濾的選定值。 我的目標是看看如果給出這兩個imputs,我可以創建兩個IEnumerable

 IEnumerable<SelectListItem> selectedItems;
 IEnumerable<SelectListItem> nonSelectedItems;

我會用來填充雙列表框插件。 我可以很容易地得到selectedItems但是當我嘗試創建未選擇的List我嘗試使用Except()但它似乎無法獲取完整列表並“減去”所選列表中的任何項目。

我使用錯誤的方法來做這個過濾器嗎?

你在尋找Where()

allItems.Where(o => !selectedIds.Contains(int.Parse(o.Value)))

您可以使用ToLookup一次計算兩個子列表:

var lookup = allItems.ToLookup(o => selectedIds.Contains(int.Parse(o.Value)));
var selectedItems = lookup[true];

您可以通過將IEnumerable<int>更改為HashSet<int>來使這些更快,以便Contains()變為O(1)。 只要確保不要失去這一點

暫無
暫無

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

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