Динамическое новое поле в LINQ - PullRequest
2 голосов
/ 30 марта 2012

Можно ли создать new {variable = x.something} и указать имя переменной динамически?Например:

var name = "dynamicName"; 
var result = context.select(x=> new {name.ToString() = x.something })

Таким образом, у нас будет список, в котором имя свойства равно dynamicName.Так это как-то возможно?

Ответы [ 3 ]

5 голосов
/ 30 марта 2012

Это невозможно для анонимного типа, потому что анонимные типы не являются динамическими. Они должны быть полностью определены во время компиляции. Однако вы можете использовать динамический объект, такой как 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 голос
/ 30 марта 2012

Вы можете создать анонимный тип во время выполнения с помощью Reflection.Emit, но это не очень легко (http://www.codeproject.com/Articles/13337/Introduction-to-Creating-Dynamic-Types-with-Reflec). Обычно это лучше, чем просто нам диктаторный, массив или динамический

1 голос
/ 30 марта 2012

Используйте

    Dictionary<string,string> myDic 

Тогда

    myDic.Add(name.ToString(), x.something)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...