[英]Select objects in binding list that match criteria using LINQ?
我有一個包含100,000個對象的BindingList。 每個對象都包含一個bool屬性,該屬性指示對象是否已被修改。 我基本上想遍歷對象,當我找到一個將bool屬性設置為true的對象時,我想將其設置為false。 類似於以下內容:
foreach (myObject obj in bindingListOfMyObjects)
{
if (obj.Modified)
{
obj.Modified = false;
}
}
是否可以使用LINQ做到這一點? 那會比上面的代碼快嗎?
不。在LINQ中無法做到這一點。 為此,您需要直接在BindingList
修改元素。 LINQ只會返回一個新的IEnumerable
。
您可以使用Enumerable.Where
過濾集合,然后在循環中對其進行修改:
foreach (myObject obj in bindingListOfMyObjects.Where(o => o.Modified))
obj.Modified = false;
盡管可能會更容易理解意圖,但這不會更快。
請注意,通常您不會使用LINQ進行真正的修改-LINQ查詢就其性質而言,不會引起副作用(更改值)。 它們旨在用作查詢 -因此過濾對象是適當的,然后進行循環設置。 有關詳細信息,我建議閱讀Eric Lippert在ForEach vs foreach上的文章 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.