是否可以在 LINQ 中编写此代码?我尝试使用 LINQ。但是,我认为它必须循环两次;首先验证是否a
存在,然后遍历qs
.
所以我想出了这个代码。
public a Traverse(List<q> qs,string id)
{
foreach (var q in qs)
{
if (q.as.Any(a => a.Id == id))
{
return q.as.First(a => a.Id == id);
}
foreach (var a in q.as)
{
var result =Traverse(a.qs, id);
if(result != null)
return result;
}
}
return null;
}
我正在从 XML 中读取它,就像“q”有“a”,“a”有“q”以递归方式。
我需要找到属于的唯一 ID a
。
我知道已经在其他线程上进行了讨论,但它们没有帮助。
编辑:这是 XML 的片段
<qs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<qs>
<q>q 1</q>
<Id>1</Id>
<as>
<a>
<aprop>a</aprop>
<Id>a 1.1</Id>
<qs>
<q>
<q>q 1.1.1</q>
<Id>1.1.1</Id>
<as>
<a>
<a>a</a>
<Id>a 1.1.1.1</Id>
<qs />
<type>1</type>
</a>
<a>
<a>a</a>
<Id>a 1.1.1.2</Id>
<qs />
<type>1</type>
</a>
</as>
</q>
<q>
<q>q 1.1.2</q>
<Id>1.1.2</Id>
<as>
<a>
<a>a</a>
<Id>a 1.1.2.1</Id>
<qs />
<type>1</type>
</a>
<a>
<a>a</a>
<Id>a 1.1.2.2</Id>
<qs />
<type>1</type>
</a>
</as>
</q>