gpt4 book ai didi

entity-framework - 带有lambda的Linq to Entities Select子句

转载 作者:行者123 更新时间:2023-12-04 16:55:28 24 4
gpt4 key购买 nike

我正在开发一个新项目,我们正在使用Entity Framework,开发负责人希望尽可能使用lambda查询。我们很难弄清的一件事是如何专门选择两列。还有如何选择与众不同。我们有一个表,其中有一个供应商的多个条目,但我们只想获取供应商的列表并加载到字典对象中。它失败了,因为如所写,它试图添加已经添加的键值。进行以下查询。

Dictionary<int, string> dict = new Dictionary<int, string>();
dict = GetWamVendorInfo().AsEnumerable()
.Where(x => x.vendor_name != null && x.vendor_id != null)
//.Select(x => x.vendor_id).Distinct()
.Take(2)
.ToDictionary(o => int.Parse(o.vendor_id.ToString()), o => o.vendor_name);

我想做的只是选择vendor_id和vendor_name,这样我们就可以得到唯一的记录。

任何帮助将不胜感激。

谢谢,

朗达

最佳答案

使用匿名类型:

// earlier bit of query
.Select(x => new { VendorId = x.vendor_id, VendorName = x.vendor_name } )
.Distinct()
.ToDictionary(o => o.VendorId, o => o.VendorName);

我已经删除了对 Take(2)的调用,因为尚不清楚您为什么要这么做-并且还删除了对 VendorId的解析,我原本希望它已经是整数类型。

请注意,您几乎应该确定要从查询中删除 AsEnumerable调用-当前,您将获取所有供应商并使用LINQ to Objects进行过滤。创建空字典然后完全忽略它也是没有意义的。我怀疑您的完整查询应该是:
var vendors = GetWamVendorInfo()
.Select(x => new { VendorId = x.vendor_id,
VendorName = x.vendor_name } )
.Distinct()
.ToDictionary(o => o.VendorId,
o => o.VendorName);

顺便说一句,您应该问您的开发负责人为什么他要在各处使用lambda表达式(大概与查询表达式相对)。不同的情况最终导致使用不同的语法选项的代码更具可读性-在这方面值得灵活。

关于entity-framework - 带有lambda的Linq to Entities Select子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7286328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com