如何从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()辅助方法使创建更加简单。