Nic*_*ick 6 c# linq generics anonymous-types
我有一个泛型<>函数,它接受一个linq查询('items')并通过它枚举添加其他属性.如何选择原始"项目"的所有属性而不是项目本身(如下面的代码所示)?
所以相当于sql:select*,'bar'作为项目的Foo
foreach (var item in items)
{
var newItem = new {
item, // I'd like just the properties here, not the 'item' object!
Foo = "bar"
};
newItems.Add(newItem);
}
Run Code Online (Sandbox Code Playgroud)
没有简单的方法来做你所建议的事情,因为C#中的所有类型都是强类型的,甚至是你正在使用的匿名类型.然而,将它拉下来并非不可能.要做到这一点,你必须利用反射并在内存中发出自己的程序集,添加一个包含所需特定属性的新模块和类型.可以使用以下方法从您的匿名项获取属性列表:
foreach(PropertyInfo info in item.GetType().GetProperties())
Console.WriteLine("{0} = {1}", info.Name, info.GetValue(item, null));
Run Code Online (Sandbox Code Playgroud)