[英]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.