我是 LINQ 新手,请帮助我将这行嵌套代码转换为 LINQ。
foreach(var rule in rules)
{
foreach(var package in packages)
{
if(rule.KeyFrom == package.Key || rule.KeyTo == package.Key)
{
filteredRule.Add(new RuleModel{Package = new List<string>{rule.KeyTo, rule.KeyFrom}, Rule = rule.Rule});
}
}
}
尝试查询:
rules.SelectMany(r => packages.Select(p => p.Key == r.KeyFrom || p.Key == r.KeyTo))
.Select(new RuleModel {
Package = new List<string>{ r.Keyfrom, r.KeyTo},
Rule = r.Rule
}));
你快到了。你的问题是在SelectMany
你用过Select
用于过滤而不是使用Where
:
rules.SelectMany(r => packages.Where(p => p.Key == r.KeyFrom || p.Key == r.KeyTo))
.Select(r => new RuleModel {
Package = new List<string>{ r.Keyfrom, r.KeyTo},
Rule = r.Rule
}));
-
Where https://msdn.microsoft.com/en-us/library/bb549418(v=vs.110).aspx - 根据谓词过滤值序列
-
Select https://msdn.microsoft.com/en-us/library/bb548891(v=vs.110).aspx - 将序列的每个元素投影为新形式
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)