如何从实体框架/ LINQ的特定表中提取Tuple列表?
本文关键字:提取 Tuple 列表 实体 框架 LINQ | 更新日期: 2023-09-27 18:13:22
我需要从c# . net中的一个大表中提取一对'ID'/'Name'。
我尝试这个请求:
List<Tuple<int, string>> list = (from res in db.Resource
select new Tuple<int, string>(res.Resource_ID, res.Name)).ToList();
但不幸的是,我得到了这个错误:
LINQ to Entities只支持无参数构造函数和初始化式。
我不明白如何用这个框架提取这个元组列表,我对这个错误感到有点失落。你能帮我理解并解决我的问题吗?
最诚挚的问候,亚历克斯
您可以通过选择匿名类型来完成中间步骤:
db.Resource.Select(x => new { x.Resource_ID, x.Name }).AsEnumerable().Select(x => Tuple.Create(x.Resource_ID, x.Name)).ToList();
在Linq To Entities中不支持创建元组,所以你必须选择一个匿名类型,这相当于:
SELECT [Resource].[Resource_ID], [Resource].[Name]
然后移动到LINQ to Objects by AsEnumerable
,得到你的元组
您可以从db.Resource
创建一个列表,并使用LINQ to Collections来消除此限制:
var list = db.Resource.ToList().Select(res => Tuple.Create(res.Resource_ID, res.Name));
Tuple
类确实有一些构造函数(多达8个项目),但Create()
助手方法使创建更直接。