【发布时间】: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