我有一个字符串变量myFieldname.如何在linq表达式中将其值用作别名?
坍方
string myFieldname = "theName";
var q = (from d in data select new { d.Id, myFieldname = d.Amount });
Run Code Online (Sandbox Code Playgroud)
我想theName成为别名而不是myFieldname自己.
你不能(至少,不能以任何理智的方式).我能看到的唯一方法是使用expando对象,然后:
foreach(var pair in data select new { d.Id, d.Amount})
{
var obj = new ExpandoObject();
IDictionary<string, object> dict = obj;
dict[myFieldname] = obj.Amount;
dict["Id"] = d.Id;
// add obj to a list or similar
}
Run Code Online (Sandbox Code Playgroud)
你可以用ExpandoObject与dynamicAPI,但即使如此,我不清楚这是为了帮助您...
你不能 - 很容易 - 因为匿名类型最终成为代码中的真实类型,包括属性名称.
您必须在执行时生成类型,然后为投影创建表达式树.这对我来说听起来很多.
为什么您希望属性名称仍然是动态的?你为什么不能动态调整其他地方使用的名称?这里的大局是什么?