Gra*_*ush 33 c# linq entity-framework projection keyvaluepair
我正在尝试从EF/Linq查询加载KeyValuePairs列表,如下所示:
return (from o in context.myTable
select new KeyValuePair<int, string>(o.columnA, o.columnB)).ToList();
Run Code Online (Sandbox Code Playgroud)
我的问题是,这会导致错误
"LINQ to Entities中仅支持无参数构造函数和初始值设定项."
有一个简单的方法吗?我知道我可以为此创建一个自定义类而不是使用KeyValuePair,但这似乎重新发明了轮子.
Ser*_*kiy 70
从表中仅选择columnA和columnB,并在内存中移动进一步处理:
return context.myTable
.Select(o => new { o.columnA, o.columnB }) // only two fields
.AsEnumerable() // to clients memory
.Select(o => new KeyValuePair<int, string>(o.columnA, o.columnB))
.ToList();
Run Code Online (Sandbox Code Playgroud)
还要考虑创建包含KeyValuePairs的字典:
return context.myTable.ToDictionary(o => o.columnA, o => o.columnB).ToList();
Run Code Online (Sandbox Code Playgroud)
cuo*_*gle 10
由于LINQ to Entities不支持KeyValuePair,您应该AsEnumerable首先使用LINQ to Object :
return context.myTable
.AsEnumerable()
.Select(new KeyValuePair<int, string>(o.columnA, o.columnB))
.ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29899 次 |
| 最近记录: |