Csharp/C#教程:通过EF / Linq投射到KeyValuePair分享


通过EF / Linq投射到KeyValuePair

我正在尝试从EF / Linq查询中加载KeyValuePairs列表,如下所示:

return (from o in context.myTable select new KeyValuePair(o.columnA, o.columnB)).ToList(); 

我的问题是,这会导致错误

“LINQ to Entities中仅支持无参数构造函数和初始值设定项。”

这有简单的方法吗? 我知道我可以为此创建一个自定义类而不是使用KeyValuePair,但这似乎重新发明了轮子。

从表中仅选择columnA和columnB,并在内存中移动进一步处理:

 return context.myTable .Select(o => new { o.columnA, o.columnB }) // only two fields .AsEnumerable() // to clients memory .Select(o => new KeyValuePair(o.columnA, o.columnB)) .ToList(); 

还要考虑创建包含KeyValuePairs的字典:

 return context.myTable.ToDictionary(o => o.columnA, o => o.columnB).ToList(); 

由于LINQ to Entities不支持KeyValuePair ,因此您应该首先使用AsEnumerable转向LINQ to Object:

 return context.myTable .AsEnumerable() .Select(new KeyValuePair(o.columnA, o.columnB)) .ToList(); 

还有另一种选择,当你想为一个键存储多个值时,存在所谓的Lookup

表示每个映射到一个或多个值的键集合。

这里有一些官方文件 。

更多的查找似乎比Dictionary >快得多

上述就是C#学习教程:通过EF / Linq投射到KeyValuePair分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/951457.html

(0)
上一篇 2021年11月18日
下一篇 2021年11月18日

精彩推荐