我有一个通用<>函数,它接受一个 linq 查询('items')并通过它枚举添加额外的属性。如何选择原始“项目”的所有属性而不是项目本身(如以下代码所示)?
等同于 sql: select *, 'bar' as Foo from items
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);
}
最佳答案
没有简单的方法可以执行您的建议,因为 C# 中的所有类型都是强类型的,即使是您使用的匿名类型也是如此。然而,将其拉下来并非不可能。为此,您必须利用反射并在内存中发出您自己的程序集,添加一个新模块和包含您想要的特定属性的类型。可以使用以下方式从您的匿名项目中获取属性列表:
foreach(PropertyInfo info in item.GetType().GetProperties())
Console.WriteLine("{0} = {1}", info.Name, info.GetValue(item, null));
关于c# - linq 相当于 'select *' sql 的通用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/109934/