如何从Entity Framework / LINQ中的特定表中提取元组列表?
我需要从带有Entity Framework的C#.NET中的大表中提取一对’ID’/’Name’的列表。
我试试这个请求:
List<Tuple> list = (from res in db.Resource select new Tuple(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]
然后通过AsEnumerable
转移到LINQ to Objects并获取你的元组。
您可以从db.Resource
创建列表并使用LINQ to Collections来清除此限制:
var list = db.Resource.ToList().Select(res => Tuple.Create(res.Resource_ID, res.Name));
Tuple
类确实有一些构造函数(最多8个项目),但Create()
辅助方法使创建更加简单。