我想從IList集合中刪除N個項目。這裏是我得到的:從IList中刪除匹配謂詞中的N個項目
public void RemoveSubcomponentsByTemplate(int templateID, int countToRemove)
{
// TaskDeviceSubcomponents is an IList
var subcomponents = TaskDeviceSubcomponents.Where(tds => tds.TemplateID == templateID).ToList();
if (subcomponents.Count < countToRemove)
{
string message = string.Format("Attempted to remove more subcomponents than found. Found: {0}, attempted: {1}", subcomponents.Count, countToRemove);
throw new ApplicationException(message);
}
subcomponents.RemoveRange(0, countToRemove);
}
不幸的是,這段代碼並不像廣告中那樣工作。 TaskDeviceSubcomponents是一個IList,因此它沒有RemoveRange方法。所以,我調用.ToList()來實例化一個實際的List,但是這給了我一個重複的集合,引用了相同的集合項。這是不好的,因爲在子組件上調用RemoveRange不會影響TaskDeviceSubcomponents。
有沒有簡單的方法來實現這一點?我只是沒有看到它。
哦謝謝! .Take()真的有幫助。 :) –