我动态传递列名并尝试从数据库中获取该列的值 这是代码
public ActionResult GetValue(string colname)
{
var obj= Activator.CreateInstance(Assembly.GetExecutingAssembly().GetType("Demo.Models.DEMOTABLE");
var res = MvcApplication.dbm.Set<DEMOTABLE>().SqlQuery("Select * from DEMOTABLE");
var colvalue = from e in res select e.GetType().GetProperty(colname).GetValue(obj,null);
return View(colvalue);
}
我在obj和res中获取了正确的值,但无法获得colvalue中的列值。 它具有特定的行,但值为null,即它无法从res中标记值。
我做错了什么? 有没有适当的方法呢? 请帮忙!
答案 0 :(得分:1)
尝试这一点,而不是行没有 7 使用Entity调用,genericChildObjects将保存从Database中检索的列值。
private void GetValue(string columnName)
{
var aClassType = Assembly.GetExecutingAssembly().GetType("ConsoleApplication8.A");
Type list = typeof(List<>).MakeGenericType(new[] { aClassType });
var genericChildObjects = (IList)Activator.CreateInstance(list);
var res = new List<B> { new B() { TestData = "Test Data From Calss B" } };
res.ForEach(
r =>
{
var aClassObject = Activator.CreateInstance(aClassType);
aClassType.GetProperty(columnName)
.SetValue(aClassObject, r.GetType().GetProperty(columnName).GetValue(r));
genericChildObjects.Add(aClassObject);
});
}
答案 1 :(得分:0)
我在代码中犯了一个错误,我找到了解决方案
而不是
var colvalue = from e in res select e.GetType().GetProperty(colname).GetValue(obj,null);
我改为
var colvalue = from e in res select obj.GetType().GetProperty(colname).GetValue(e, null);
我没有在GetValue中传递数据来分配colvalue。