2

我做了这个查询来从表中获取数据

List<MyTable> liDeatil = Db.Database.SqlQuery<MyTable>("SELECT * FROM [myDB].[dbo].[MyTable]").ToList();

liDetail我想动态选择列,例如

 liDeatil.Select(s => new myclass{ Id = s.Id ,Marks = ....}).Tolist();

MyClass 在哪里

 public class MyClass
 {
     public Nullable<decimal> Id { get; set; }
     public string Marks { get; set; }
     public string rank { get; set; }
 }

有什么办法可以得到专栏请帮助我
我尝试通过反思来做到这一点但它不起作用

var ss = liDeatil.Select(s => new MyClass{ Id = s.Id ,Marks = s.GetType().GetProperties("ColumnMarks")}).Tolist();

已编辑

     public class MyTable
     {
         public Nullable<decimal> Id { get; set; }
         public string ColumnMarks{ get; set; }
         public string ColumnMarks1{ get; set; }
         public string ColumnMarks2{ get; set; }
     }
4

2 回答 2

7

根据您尝试通过反射实现的目标,以下代码应该可以工作:

var ss = liDeatil.Select(s => new MyClass{ Id = s.Id ,
Marks = (string)s.GetType().GetProperty("ColumnMarks").GetValue(s,null)}).Tolist();
于 2013-10-23T13:13:24.117 回答
3

什么不完全有效?你有例外吗?我很困惑你从哪里得到“ColumnMarks”。您没有发布 MyTable 的定义,所以它可能来自那里。

liDeatil.Select(s => new myclass{ Id = s.Id, Marks = (string)s.GetType().GetProperty("ColumnMarks").GetValue(s, null)}).Tolist();
于 2013-10-23T13:15:40.583 回答