C# 如何使用Entity Framework/LINQ从特定表中提取元组列表?

C# 如何使用Entity Framework/LINQ从特定表中提取元组列表?,c#,.net,linq,entity-framework,list,C#,.net,Linq,Entity Framework,List,我需要使用实体框架从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(); 但不幸的是,我犯了这个错误: LIN

我需要使用实体框架从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实体中只支持无参数构造函数和初始值设定项

我不知道如何用这个框架提取这个元组列表,我对这个错误感到有点迷茫。 你能帮我理解并解决我的问题吗

致以最良好的祝愿


Alex

通过选择匿名类型,您可以通过中间步骤完成此操作:

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集合删除此限制:

var list = db.Resource.ToList().Select(res => Tuple.Create(res.Resource_ID, res.Name));

Tuple类确实有一些最多8项的构造函数,但helper方法使创建更简单。

+1用于使用匿名类型减少从数据库传输的数据量。很好,我很高兴它能帮助您。@fuex易于理解。感谢Tuple类确实有一个构造函数。请参阅:var tuple=new tuplers.Resource\u ID,res.Name;