Transform ICollection .toDictionary() c#
本文关键字:toDictionary ICollection Transform | 更新日期: 2023-09-27 18:32:42
我在一个使用 MVC4 和 EntityFramework 的项目中。
在我的 C# 代码中,我使用返回包的简单查询访问数据库。现在一个包有一个项目列表,我需要一个字典,其中包含这些项目的 ID 和名称。我使用此代码实现以下目标:
Package pkg = (from aPkg in DB.Packages where aPkg.PackageId == id
select aPkg).First();
Dictionary<int, string> materials = new Dictionary<int,string>();
foreach(Material mat in pkg.Materials){
materials.Add(mat.MaterialId, mat.Label);
}
但是这很冗长,我注意到我可以使用另一个功能: pkg.Materials.toDictionary<tKey, tElement>()
.
不幸的是,即使在检查了官方文档之后,我也无法理解如何使用此功能以不那么冗长的方式实现相同的目标。我该怎么做?
根据 msdn,您必须提供两个Func<TSource, TResult>
对象,以返回将用于字典元素的键和值的值。
var materials = pkg.Materials.ToDictionary(x => x.MaterialId, x => x.Label);
仍然要注意MaterialId是唯一的,否则ToDictionary扩展方法(和你的代码)将崩溃。
这应该可以做到:
var dictionary = pkg.Materials.ToDictionary(id => id.MaterialId, l => l.Label);
尝试以这种方式使用 ToDictionary 方法:
pkg.Materials.ToDictionary(x => x.MaterialId, x => x.Label);