如何从列表中选择动态列

DKD*_*DKD 6 c# linq

我想从List下面动态选择列.那么最好的方法是什么呢?

//a objects list
List<DashBoard> dashboardlist = (List<DashBoard>)objList;  
string strColumns = "RecDate,ModifiedDate";
objList = (from obj in dashboardlist select new { strColumns }).ToList();
Run Code Online (Sandbox Code Playgroud)

/////////////好吧,忘记对象列表说我有数据库表,其中包含列ID,名称,年龄,性别等.然后我有列表列表显示,列列表是根据条件改变.所以我有List人; 和列columnTemplate; 所以现在我想根据模板选择列.

DKD*_*DKD 7

感谢您提出我的问题的想法.在Google中我花了几个小时我找到了解决方案.

public void Test() {
    var data = new[] {
        new TestData { X = 1, Y = 2, Z = 3 }
    ,   new TestData { X = 2, Y = 4, Z = 6 }
    };
    var strColumns = "X,Z".Split(',');
    foreach (var item in data.Select(a => Projection(a, strColumns))) {
        Console.WriteLine("{0} {1}", item.X, item.Z);
    }
}
private static dynamic Projection(object a, IEnumerable<string> props) {
    if (a == null) {
        return null;
    }
    IDictionary<string,object> res = new ExpandoObject();
    var type = a.GetType();
    foreach (var pair in props.Select(n => new {
        Name = n
    ,   Property = type.GetProperty(n)})) {
        res[pair.Name] = pair.Property.GetValue(a, new object[0]);
    }
    return res;
}
class TestData {
    public int X { get; set; }
    public int Y { get; set; }
    public int Z { get; set; }
}
Run Code Online (Sandbox Code Playgroud)