簡體   English   中英

為什么LINQ中的聯接會在C#中生成額外的對象?

[英]Why Does a join in LINQ generate extra objects in C#?

我知道標題聽起來很熟,我敢肯定對此有一個非常簡單的解釋,但現在我不介意。

我正在使用Linq進行相交查詢:

    var result = from item1 in em1.EmailBindingList
                 join item2 in em2.EmailBindingList

                 on item1.Header equals item2.Header
                 select item1;

(em1和em2都有15875個項目,並且兩者都相同)上面的結果應該為我提供15875個項目。

但是,我得到了15879

看照片。 我真的不明白。 為什么

請參閱下面的cdhowie評論。 他為我解決了這個問題。 謝謝。

聽起來您在一個或兩個列表中的某些元素具有相同的Header,從而得出笛卡爾乘積。

您可以通過查看em1.EmailBindingList.Select(i => i.Header).Distinct().Count()的結果來驗證這一點,與em2相同。 如果其中任何一個產生的值都低於15875,則幾乎可以肯定是原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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