我有一个像这样的简单对象:
public class Foo {
public int One { get; set; }
public int Two { get; set; }
....
public int Eleven { get; set; }
}
给定一个IEnumerable,我想要的是一个LINQ方法来进行转换:
myFooEnumerable.Select(n => transformMagicGoesHere);
我的返回对象如下所示:
public class Bar {
public string DurationDescription {get;set;} //Value would be "One" or "Two" or ...
public int Value {get;set;} //Holds value in the property One or Two or ...
}
因此,对于上例中myFooEnumerable中的每个项目N,我会在我的结果选择语句中得到11(N)个项目。
答案 0 :(得分:2)
这应该这样做:
var bars = myFooEnumerable.SelectMany(
x => x.GetType().GetProperties().Select(p => new Bar {
DurationDescription = p.Name,
Value = (int)p.GetValue(x)
}));
首先,IMO并不是一件好事,但它至少会起作用。