【问题标题】:How to get value by column name entity framework linq?如何通过列名实体框架linq获取值?
【发布时间】:2013-09-19 16:18:30
【问题描述】:

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

编辑:

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";

它将仅获取选定的列,那么我将如何使用实体框架而不是使用 sql 查询来完成相同的功能?

提前致谢。 感谢您的帮助。

解决方案- 这在链接中是不可能的,因此可以替代此方法,我使用链接中描述的扩展方法将 List 转换为 DataTable - https://stackoverflow.com/a/5805044/1416033

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();
   }
}

【问题讨论】:

  • context.Table.Where 应该返回 Table 模型类的 IQueryable。
  • @GarrisonNeely 我知道它会返回 IQueryable 但如果我想按列名访问获取的数据,那么我应该将获取的数据转换成什么通用类型?
  • 如果您在末尾附加一个 .ToList() ,它将返回一个 List ,它将在方法范围之外持续存在。默认情况下,表应该包含数据库中的所有列。
  • @GarrisonNeely 如果我将数据放入 .ToList(),该列表包含 XYZ 列之一,那么我如何直接访问“XYZ”列值?

标签: c# asp.net linq entity-framework asp.net-mvc-4


【解决方案1】:

您所描述的内容不适用于本机 LINQ 功能。不过有一个图书馆,应该可以帮助你。查看动态 LINQ:http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

【讨论】:

  • 我不知道这在 LINQ 中是不可能的。所以谢谢你的信息。我没有使用动态 LINQ,而是使用扩展方法,我已经用解决方案更新了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-26
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 2014-12-20
相关资源
最近更新 更多