c# - 我可以使用 LINQ 改进这个算法吗?

标签 c# linq

我正在创建一个从 Foo 到 Baa 的一对一映射的集合。

Baa 包含 Foo 的唯一实例的集合。

这是完成这项工作的一些代码:

Dictionary<Foo, Baa> mappings = new Dictionary<Foo, Baa>();

foreach (Baa baa in CollectionOfBaa)
{
    foreach (Foo foo in baa.CollectionOfFoo)
    {
        mappings.Add(foo, baa);
    }
}   

是否有使用 LINQ 执行此操作的更好方法?

我并不反对用 KeyValuePair 列表替换字典。

谢谢。

最佳答案

你可以使用

var mappings = (from baa in CollectionOfBaa
                from foo in  baa.CollectionOfFoo
                select new { foo, baa }).ToDictionary(e => e.foo, e=> e.baa);

关于c# - 我可以使用 LINQ 改进这个算法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3178825/

相关文章:

linq - 获取每日计数时,如何使 LINQ 查询中显示零计数?

c# - LambdaExpression 构造函数

Linq 延迟执行

c# - 使用 MSTest 和 Moq 测试存储库 - .Verify 不工作

c# - 如何 Hook ASP .NET 编译过程?

C# List 与作为元组返回的元组中的某些项目相交

c# - 动态 LINQ - 与 GROUP BY/SELECT 语法作斗争

c# - 我能以某种方式使用动态对象模拟多重继承吗?

c# - 混合模型优先和代码优先

c# - 在 winrt c# 中加密字符串并在 c# .net 中解密