Linq查询包含对象列表的对象列表
本文关键字:对象 列表 包含 查询 Linq | 更新日期: 2023-09-27 18:28:33
我有一个名为crepes的foo列表。我想返回foo,其中bar.doritos == "coolRanch"
class foo
{
List<bar> item;
string candy;
string beer;
}
class bar
{
string doritos;
string usb;
}
var item = crepes.item.Where(x => x.doritos == "coolRanch").FirstOrDefault();
我已经从其他线程中拼凑出了上面的linq查询,但crepes.item抛出了一个错误。"列表不包含'item'的定义,也不包含接受第一个参数的'item'定义…
假设crepes是List<Foo>
,则需要向linq查询添加一个附加级别。
var item = crepes.Where(a => a.item.Any(x => x.doritos == "coolRanch")).FirstOrDefault();
您的item
访问修饰符是private
(这是class
的C#默认值),它应该是public
这也适用于您的doritos
此外,由于您的crepes
是List
,请添加一层LINQ(其他人也建议这样做)来完全修复它,比如这个
var item = crepes.Where(f => f.item.Any(b => b.doritos == "coolRanch")).FirstOrDefault(); //f is of foo type, b is of bar type
如果你像这个一样修复你的类
class Foo
{
public List<Bar> Items { get; set; }
public string Candy { get; set; }
public string Beer { get; set; }
}
class Bar
{
public string Doritos { get; set; }
public string Usb { get; set; }
}
您的查询将看起来像
var crepes = new List<Foo>();
var item = crepes.FirstOrDefault(f => f.Items.Any(b => b.Doritos == "coolRanch"));
这里,我们试图得到第一个Foo
,它在Items
中至少有一个Bar
,其中Doritos == "coolRanch"
。