代码:
foreach (var item in testItems.Distinct())
{
if (!testMap.ContainsKey(item.GetId()))
{
testMap.Add(item.GetId(), item);
}
}
如何将foreach循环转换为linq以获取上述代码?感谢。
答案 0 :(得分:4)
有时“将{x}转换为LINQ”的正确方法是:不要。它不适合每项工作。您当前使用foreach
和字典变异的代码很好。保持它。
如果重复的ID(在Distinct()
之后)不是问题,您可以这么做:
var map = testItems.Distinct().ToDictionary(x => x.GetId());
但那是关于它的。
答案 1 :(得分:0)
testItems.ToList().ForEach(item=>
{
if (!testMap.ContainsKey(item.GetId()))
{
testMap.Add(item.GetId(), item);
}
});
答案 2 :(得分:0)
对于1行版本,您可以尝试:
testItems.Distinct().Where(i => !testMap.ContainsKey(i.GetId()).ForEach(f => testMap.Add(f.GetId, f));
这将在一行中完成整个操作,虽然我不是一次做所有事情的忠实粉丝,因为它可能更难调试。