转换ICollection.toDictionary()c#
我在一个使用MVC4和EntityFramework的项目中 在我的C#代码中,我通过返回一个包的简单查询访问数据库。现在一个包有一个项目列表,我需要一个带有这些项目Id和名称的字典。我使用此代码实现以下功能:转换ICollection.toDictionary()c#,c#,linq,asp.net-mvc-4,dictionary,C#,Linq,Asp.net Mvc 4,Dictionary,我在一个使用MVC4和EntityFramework的项目中 在我的C#代码中,我通过返回一个包的简单查询访问数据库。现在一个包有一个项目列表,我需要一个带有这些项目Id和名称的字典。我使用此代码实现以下功能: Package pkg = (from aPkg in DB.Packages where aPkg.PackageId == id select aPkg).First(); Dictionary<int, string> materials = new Dic
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);
}
Package pkg=(来自DB.Packages中的aPkg,其中aPkg.PackageId==id
选择aPkg).First();
字典材料=新字典();
foreach(包装材料中的材料垫){
材料。添加(材料材料、材料标签);
}
然而,这相当冗长,我注意到我可以使用另一个函数:pkg.Materials.toDictionary()
不幸的是,即使在查看了官方文档之后,我也无法理解如何使用此函数以不太冗长的方式实现相同的目标。如何执行此操作?根据,必须提供两个Func
对象,以返回将用于字典元素的键和值的值
var materials = pkg.Materials.ToDictionary(x => x.MaterialId, x => x.Label);
仍然要注意MaterialId是唯一的,否则ToDictionary扩展方法(和您的代码)将崩溃。根据,您必须提供两个Func
对象,以返回将用于字典元素的键和值的值
var materials = pkg.Materials.ToDictionary(x => x.MaterialId, x => x.Label);
仍然要注意MaterialId是唯一的,否则ToDictionary扩展方法(和您的代码)将崩溃。这应该可以做到:
var dictionary = pkg.Materials.ToDictionary(id => id.MaterialId, l => l.Label);
这应该做到:
var dictionary = pkg.Materials.ToDictionary(id => id.MaterialId, l => l.Label);
尝试以以下方式使用ToDictionary方法:
pkg.Materials.ToDictionary(x => x.MaterialId, x => x.Label);
尝试以以下方式使用ToDictionary方法:
pkg.Materials.ToDictionary(x => x.MaterialId, x => x.Label);