簡體   English   中英

如何通過單個屬性將兩個不同的.NET列表相交?

[英]How can I intersect two different .NET lists by a single property?

我試圖根據第二個Baa列表中的某些值來過濾我的第一個Foo列表。

例如。

這是我在.NET Fiddle中提出一個例子 ......

var foos = new List<Foo>
{
    new Foo { Name = "Leia" },
    new Foo { Name = "Han Solo" },
    new Foo { Name = "Chewbacca" },
    new Foo { Name = "Luke" },
};

    var baas = new List<Baa>
{
    new Baa { Alias = "aaaaa" },
    new Baa { Alias = "bbbb" },
    new Baa { Alias = "Leia" },
    new Baa { Alias = "Luke" }
};

// Expected output:
// List<Foo> results = Foo { "Leia" } and Foo { "Luke" };

看看我的要求:通過第二個列表Alias屬性過濾第一個列表(按Name )。

這將返回一個Foo列表,其中包含2個結果?

有線索嗎?

您可以在baas列表中使用Any

foos.Where(f => baas.Any(b => b.Alias == f.Name));

或者使用連接(查詢語法中的清理器):

var query = 
    from f in foos
    join b in baas on f.Name equals b.Alias
    select f;

是完整的.NET Fiddle中的代碼

你可以使用Join

var results = foos.Join(baas, f => f.Name, b => b.Alias, (f, b) => f);

此答案類似。

暫無
暫無

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

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