Convert to LINQ
本文关键字:LINQ to Convert | 更新日期: 2023-09-27 18:13:23
我有一个包含另一个列表的列表。我想在主列表中循环,然后在所有次要列表中循环,直到次要列表中对象的id与所需的id匹配。然后返回主列表。
是否可以将以下代码转换为LINQ?
var myID = "1"; //Just a stub
var tempItem = null;
//Loop each itemA from list A
foreach (var itemA in listA)
{
//Loop each itemB from itemA.listB
foreach (var itemB in itemA.listB)
{
//Compare IDs
if (itemB.ID == myID)
{
//If IDs of itemB match, return itemA
tempItem = itemA;
break;
}
}
}
tempItem = listA.FirstOrDefault(a=> a.itemB.Any(b=>b.ID==myID))
这将返回listA
项,如果没有找到列表则返回null:
var tempItem = listA.FirstOrDefault(l => l.listB.Exists(x => x.ID == myID));
我想你应该试试下面的代码
var result = itemA.FirstOrDefault(p => p.listB.Find(t => t.ID == myID) != null));
如果没有找到匹配项,则返回null。否则,将返回第一个匹配对象。要获得匹配对象的集合,只需将FirstOrDefault方法替换为Where
foreach (var itemA in ListA.Where(itemA => itemA.B.Any(itemB => itemB.ID == myID)))
{
tempItem = itemA;
}