设置匿名类型属性名称

use*_*141 23 c# linq anonymous properties

假设我有以下代码:

string SomeConst = "OtherName";
var persons = GetPersons(); //returns list of Person
var q = persons.Select(p => 
new
{
    SomeConst = p.Name
});
Run Code Online (Sandbox Code Playgroud)

基本上,我期望在q匿名类型与命名属性的序列中文别名,而不是SomeConst.我怎样才能实现这样的行为?

Tho*_*que 16

你不能这样做.必须在编译时知道匿名类型的属性名称.为什么你需要这样做?

您可以通过创建一系列字典而不是匿名对象来实现类似的效果:

string SomeConst = "OtherName";
var persons = GetPersons(); //returns list of Person
var q = persons.Select(p => 
new Dictionary<string, string>
{
    { SomeConst, p.Name }
});
Run Code Online (Sandbox Code Playgroud)

  • 如果您在多个位置使用相同的匿名类型,则应创建命名类型 (5认同)
  • 不存在"常量变量"......如果它是常量,则可以在创建匿名对象时直接使用实际名称.如果它是一个变量,那是不可能的,但你可以用我的答案中解释的字典来做 (2认同)