我有一个包含相同类的内部列表的类,例如:
class Foo
{
string SearchId;
List<Foo> GroupedPackages
}
我想返回适合条件的第一个“ foo”实例,它可以在主实例中,也可以在内部List中。
这是我到目前为止的内容-有点丑陋,但有效:
Package = response.lst.Where(p => p.SearchId == SearchId ||
(p.GroupedPackages != null &&
p.GroupedPackages.Any(m => m.SearchId==SearchId)))
.FirstOrDefault();
if (Package != null)
{
if (Package.SearchId != SearchId)
{
Package = Package.GroupedPackages.FirstOrDefault(m => m.SearchId == SearchId);
}
}
其中“ response.lst”是foo的列表,而Package是foo。
我想如果可能的话在一行lambda表达式中进行操作
这会选择在顶层或中的任何实例中Foo
指定的第一个。SearchId
Foo
GroupedPackages
Package = response.lst
.Concat(response.lst
.Where(x => x.GroupedPackages != null)
.SelectMany(x => x.GroupedPackages)
)
.FirstOrDefault(x => x.SearchId == SearchId);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句