我有一个字符串列表,在这个字符串列表中可能有对其他字符串列表的引用。例如,假设列表是这样的:[a.txt, b.txt, c.more]
,当我遍历列表时,我想在字典中查找:{{'c.more', [c.txt, d.txt]}}
所以结果列表是在字典[a.txt, b.txt, c.txt, d.txt]
中查找的结果c.more
。
我在这一点上是这样的:
var dict = new Dictionary<string,List<string>>
{
{"c.more", new List<string> { "c.txt", "d.txt" } }
}
list.SelectMany(
f =>
f.EndsWith(".more")
? Expand(f)
: Include(f, dict))
Where Expand and Include do this:
public IEnumerable<string> Include(string f) { yield return f; }
public IEnumerable<string> Expand(string f, Dictionary<string,List<string>> dict) {
return dict.ContainsKey(f) ? dict[f] : new List<string>();
}
我可以简单地new List<string> { f }
在三元的前半部分返回 a 并在后半部分进行查找的结果,但我想稍后处理递归查找,所以我正在扩展 Expand。现在我并不真正关心内存使用情况,但我觉得可能有一些其他的方式来做我还没见过的事情。
有没有更好的方法来扩展更多列表的列表?