首頁 >後端開發 >C++ >LINQ 如何根據另一個清單中項目的存在來有效過濾一個清單中的項目?

LINQ 如何根據另一個清單中項目的存在來有效過濾一個清單中的項目?

Barbara Streisand
Barbara Streisand原創
2025-01-19 18:27:10243瀏覽

How Can LINQ Efficiently Filter Items in One List Based on the Presence of Items in Another List?

利用LINQ查詢過濾清單中的項目

LINQ提供了一種高效率的方法來根據另一個清單中是否存在項目來過濾清單中的項目。請看下面的程式碼範例:

<code class="language-csharp">class Program
{
    static void Main(string[] args)
    {
        // 示例数据
        List<Person> peopleList1 = new List<Person>() { new Person() { ID = 1 }, new Person() { ID = 2 }, new Person() { ID = 3 } };
        List<Person> peopleList2 = new List<Person>() { new Person() { ID = 1 }, new Person() { ID = 2 }, new Person() { ID = 3 }, new Person() { ID = 4 }, new Person() { ID = 5 } };
    }
}

class Person
{
    public int ID { get; set; }
}</code>

我們需要找到peopleList2中不在peopleList1中的項目。這可以透過LINQ來實現。

使用Except()方法

LINQ提供Except()方法,它傳回第一個清單中不在第二個清單中的所有元素。我們可以如下使用它:

<code class="language-csharp">var result = peopleList2.Except(peopleList1);</code>

這將傳回一個包含ID為4和5的人員的集合。

使用LINQ查詢語法

LINQ也允許我們使用查詢語法執行過濾操作。以下是使用查詢語法實現相同結果的方法:

<code class="language-csharp">var result = from p in peopleList2
             where !peopleList1.Any(p2 => p2.ID == p.ID)
             select p;</code>

此查詢與Except()方法產生相同的結果。

效能說明:

要注意的是,這兩種方法的時間複雜度均為O(n*m),其中n和m是正在比較的兩個列表的大小。這意味著隨著清單規模的成長,過濾操作所需的時間也會顯著增加。對於大型資料集,可能需要探索其他方法來優化效能。

以上是LINQ 如何根據另一個清單中項目的存在來有效過濾一個清單中的項目?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn