在运行时动态地选择列使用实体框架 [英] Dynamically select columns in runtime using entity framework

查看:133
本文介绍了在运行时动态地选择列使用实体框架的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个现成的函数像这样

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆