C# 如何通过列名实体框架linq获取值?

C# 如何通过列名实体框架linq获取值?,c#,asp.net,linq,entity-framework,asp.net-mvc-4,C#,Asp.net,Linq,Entity Framework,Asp.net Mvc 4,我有一个列名列表。我想使用列名列表迭代获取的数据,那么我应该使用什么泛型类型将获取的数据转换为 编辑: List columns=new List(); 列。添加(“第1列”); 列。添加(“第2列”); 列。添加(“第3列”); string joinColumns=string.Join(“,”列); string sql=“从表中选择”+joinColumns+”; 它将只获取选定的列,那么我如何使用EntityFramework而不是sql查询来实现相同的功能呢 提前谢谢。 谢谢你的帮

我有一个列名列表。我想使用列名列表迭代获取的数据,那么我应该使用什么泛型类型将获取的数据转换为

编辑:

List columns=new List();
列。添加(“第1列”);
列。添加(“第2列”);
列。添加(“第3列”);
string joinColumns=string.Join(“,”列);
string sql=“从表中选择”+joinColumns+”;
它将只获取选定的列,那么我如何使用EntityFramework而不是sql查询来实现相同的功能呢

提前谢谢。 谢谢你的帮助

解决方案- 这在链接中是不可能的,所以除了此之外,我使用链接中描述的扩展方法将列表转换为DataTable-

List columns=new List();
列。添加(“第1列”);
列。添加(“第2列”);
列。添加(“第3列”);
List accountList=GetAccountList();
DataTable dt=accountList.ToDataTable();
foreach(数据行dr在dt.行中)
{
foreach(列中的字符串列)
{
val=dr[column].ToString();
}
}

您所描述的与本机LINQ功能不兼容。不过有一个图书馆,应该会对你有所帮助。签出Dynamic LINQ:

context.Table.Where应返回表模型类的IQueryable。@Garrisonnely我知道它将返回IQueryable,但如果我想按列名访问获取的数据,那么我应该将获取的数据转换为哪种泛型?如果在末尾附加.ToList(),它将返回一个列表,该列表将在方法的作用域之外持久存在。默认情况下,表应该包含数据库中的所有列。@Garrisonnely如果我将数据放入.ToList(),该列表包含一列XYZ,那么我如何直接访问该“XYZ”列值?您可以使用匿名类型,我不知道在LINQ中不可能这样做。谢谢你提供的信息。我没有使用动态LINQ,而是使用扩展方法,我用解决方案更新了我的问题。
List<string> columns = new List<string>();
columns.Add("column1");
columns.Add("column2");
columns.Add("column3");

string joinColumns = string.Join(",", columns);
string sql = "select "+joinColumns+" from Table";
List<string> columns = new List<string>();
columns.Add("column1");
columns.Add("column2");
columns.Add("column3");

List<Accounts> accountList = GetAccountList();
DataTable dt = accountList.ToDataTable<Accounts>();
foreach (DataRow dr in dt.Rows)
{
   foreach (string column in columns)
   {
      val = dr[column].ToString();
   }
}