簡體   English   中英

使用LINQ在綁定列表中選擇與條件匹配的對象?

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

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