Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ中的动态新领域_C#_Linq_Entity Framework_Linq To Entities - Fatal编程技术网

C# LINQ中的动态新领域

C# LINQ中的动态新领域,c#,linq,entity-framework,linq-to-entities,C#,Linq,Entity Framework,Linq To Entities,这是否可以创建新的{variable=x.something}并动态指定变量名?例如: var name = "dynamicName"; var result = context.select(x=> new {name.ToString() = x.something }) 这样,我们将有一个属性名为dynamicName的列表。 那么这在某种程度上是可能的吗?对于匿名类型,这是不可能的,因为匿名类型不是动态的。它们必须在编译时完全定义。但是,您可以使用动态对象,如ExpandoO

这是否可以创建
新的{variable=x.something}
并动态指定变量名?例如:

var name = "dynamicName"; 
var result = context.select(x=> new {name.ToString() = x.something })
这样,我们将有一个属性名为dynamicName的列表。
那么这在某种程度上是可能的吗?

对于匿名类型,这是不可能的,因为匿名类型不是动态的。它们必须在编译时完全定义。但是,您可以使用动态对象,如
ExpandoObject

var name = "dynamicName"; 
var result = context.Select(x =>
                            {
                                var exp = new ExpandoObject() as IDictionary<string, object>;
                                exp[name] = x.something;
                                return (dynamic)exp;
                            });
var name=“dynamicName”;
var result=context.Select(x=>
{
var exp=作为IDictionary的新ExpandooObject();
exp[name]=x.something;
返回(动态)exp;
});
使用

    Dictionary<string,string> myDic 

您可以在运行时使用Reflection.Emit创建匿名类型,但这并不容易(http://www.codeproject.com/Articles/13337/Introduction-to-Creating-Dynamic-Types-with-Reflec). 通常情况下,最好只使用命令式、数组或动态

您可以使用
NameValueCollection
而不是匿名类型。你为什么需要这样的东西?@Daniel就是一个创建列名的例子dynamically@ADrian实体框架+1,但我建议使用
字典
。原因很简单,
x.something
不一定是string.interest方法,我只是想知道您现在如何能够以合理的方式使用
result
,因为从技术上讲,它可以是任何东西的集合。只是一些值得思考的东西……“一个带有语句体的lambda表达式不能转换为表达式树”@kosnkov,事实上,这将与Linq to对象一起工作,但我不认为有一种方法可以通过实体框架实现这一点
    myDic.Add(name.ToString(), x.something)