在运行时动态地选择列使用实体框架 [英] Dynamically select columns in runtime using entity framework
本文介绍了在运行时动态地选择列使用实体框架的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个现成的函数像这样
I have an existing function like this
public int sFunc(string sCol , int iId)
{
string sSqlQuery = " select " + sCol + " from TableName where ID = " + iId ;
// Executes query and returns value in column sCol
}
该表有四列来存储整数值,我用上面的函数分别读取它们。
The table has four columns to store integer values and I am reading them separately using above function.
现在,我将其转换为实体框架。
Now I am converting it to Entity Framework .
public int sFunc(string sCol , int iId)
{
return Convert.ToInt32(TableRepository.Entities.Where(x => x.ID == iId).Select(x => sCol ).FirstOrDefault());
}
但上面的函数返回一个错误
but the above function returns an error
输入字符串格式不正确
因为它返回的列名本身。
because it returns the column name itself.
我不知道如何解决这个,因为我很新的EF
I don't know how to solve this as I am very new to EF.
任何帮助将AP preciated
Any help would be appreciated
感谢您
推荐答案
这可能会帮助您解决问题:
This might help to solve your problem:
public int sFunc(string sCol, int iId)
{
var _tableRepository = TableRepository.Entities.Where(x => x.ID == iId).Select(e => e).FirstOrDefault();
if (_tableRepository == null) return 0;
var _value = _tableRepository.GetType().GetProperties().Where(a => a.Name == sCol).Select(p => p.GetValue(_tableRepository, null)).FirstOrDefault();
return _value != null ? Convert.ToInt32(_value.ToString()) : 0;
}
这方法现在动态输入法参数工作 SCOL
。
This method now work for dynamically input method parameter sCol
.
这篇关于在运行时动态地选择列使用实体框架的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文