c# - LINQ 根据列名动态选择列

标签 c# linq visual-studio-2012 dynamic-linq

我进行此查询是为了从表中获取数据

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; }
     }

最佳答案

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

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

关于c# - LINQ 根据列名动态选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19542569/

相关文章:

C# 定时器或 Thread.Sleep

c# - 生成圆柱坐标

c# - linq从属性等于值的对象数组中删除项目

c# - LINQ 列表 : Specified cast is not valid

c# - 防止 Visual Studio 调试在明显的 "unhandled exception"上中断

c++ - 有没有人真正让 NVCC 和英特尔编译器协同工作?

javascript - Backbone.js Visual Studio 设置

c# - 填写下拉列表并将分配的产品计数附加到每个

c# - gridview 上的复选框事件?

c# - 与时间无关的日期列表