是否可以创建new {variable = x.something}
并动态指定变量名称?例如:
var name = "dynamicName";
var result = context.select(x=> new {name.ToString() = x.something })
通过这种方式,我们将得到一个列表,其中属性名称为dynamicName。 这有可能吗?
答案 0 :(得分:5)
对于匿名类型,这是不可能的,因为匿名类型不是动态的。它们必须在编译时完全定义。但是,您可以使用动态对象,例如ExpandoObject
:
var name = "dynamicName";
var result = context.Select(x =>
{
var exp = new ExpandoObject() as IDictionary<string, object>;
exp[name] = x.something;
return (dynamic)exp;
});
答案 1 :(得分:1)
使用
Dictionary<string,string> myDic
然后
myDic.Add(name.ToString(), x.something)
答案 2 :(得分:1)
您可以使用Reflection.Emit在运行时创建匿名类型,但这并不容易(http://www.codeproject.com/Articles/13337/Introduction-to-Creating-Dynamic-Types-with-Reflec)。通常情况下,对我们来说,dictonary,array或dynamic
更好