gpt4 book ai didi

c# - Linq 查询查找嵌套列表包含序列的匹配项

转载 作者:太空宇宙 更新时间:2023-11-03 20:59:55 24 4
gpt4 key购买 nike

<分区>

给定这两个对象:

public class Foo{
public string Result {get;set;}
public List<Bar> Bars {get;set;}
}

public class Bar{
public string Left {get;set;}
public string Right {get;set;}
}

这些看起来像这样的实例:

List<Foo> myFoos = new List<Foo>()
{
new Foo { Bars = new List<Bar>
{
new Bar { Left = "myLeft1", Right = "myValue1"},
new Bar { Left = "myLeft2", Right = "myValue2"}
},
Result = "TheWinningResult"},
new Foo { Bars = new List<Bar>
{
new Bar { Left = "myLeft2", Right = "myValue2"},
new Bar { Left = "myLeft3", Right = "myValue3"}
},
Result = "TheLosingResult"},
new Foo{ Bars = new List<Bar>
{
new Bar { Left = "myLeft1", Right = "myValue1"},
new Bar { Left = "myLeft2", Right = "myValue2"},
new Bar { Left = "myLeft3", Right = "myValue3"}
},
Result = "TheOtherLosingResult"},
};

List<Bar> bars = new List<Bar>()
{
new Bar{ Left = "myLeft1", Right = "myValue1" },
new Bar{ Left = "myLeft2", Right = "myValue2" }
};

我正在尝试找到 FirstOrDefault() Foo,其中 Foo.Bars 具有完全匹配的 bars

在这种情况下,我试图返回 Foo whos Result is "TheWinningResult"

我尝试了以下方法:

Foo foo =  myFoos.Where(t => t.Bars.All(t2 => bars.Contains(t2))).FirstOrDefault();

Foo foo = myFoos.Where(t => bars.All(r => t.Bars.Contains(r))).FirstOrDefault();

Foo foo = myFoos.FirstOrDefault(t => t.Bars.Any(r => bars.All(ru => ru.Left == r.Left && ru.Right == r.Right)));

知道我哪里出错了吗?

更新

我忘了说,Foo 中的 Bars 顺序应该无关紧要。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com