![](/img/trans.png)
[英]How can I get data type of each column in a SQL Server table/view etc. using C# Entity Framework?
[英]C# Entity Framework - How can I get a column which is specified as a paremeter
我正在使用C#使用MySQL的ADO.NET实体框架编写方法。 我正在创建一个函数,当调用该函数时,我指定要选择的列,如下所示:
public string GetColumn(string whereValue, string column)
{
xxxEntities data = new xxxEntities();
lock (lockObject)
{
var result = data.employees.SqlQuery("SELECT `" + column + "` FROM `employees` WHERE `Code` = '" + code + "'");
return result.ToListAsync().Result[0].????; // I want to get the column in the parameters
}
}
谢谢,任何帮助将不胜感激。
让我们暂时假设您的目标列是一个字符串。 那么您的语法将是这样的:
// I've parameterized the parameterizable part of your query
var result = data
.employees
.SqlQuery<string>("SELECT `" + column + "` FROM `employees` WHERE `Code` = @p0", code);
return result.ToListAsync().Result[0]; // Result[0] is a string
如果目标列是整数,则第一行将是:
var result = data
.employees
.SqlQuery<int>("SELECT `" + column + "` FROM `employees` WHERE `Code` = @p0", code);
该程序不知道需要哪种类型的result
,因此您需要通过向SqlQuery
方法提供类型参数来告诉它。
如果column
可以具有不同的类型,则您会遇到一些问题,因为C#无法知道属性类型是什么。 您可能必须使用一些特殊的逻辑。
顺便说一句,不涉及构建自定义SQL的另一种方法是使用employee
对象进行查询,但是使用Reflection来访问所需的属性:
// Warning: this is being done from memory.
var result = data.employees
.Where(e => Code == code);
// Assuming the property is a string:
return result
.Select(e => (string) typeof(employee).GetProperty(column).GetValue(e))
.ToListAsync();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.