Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.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查询expando对象集合_C#_Linq_Dynamic - Fatal编程技术网

C# 使用动态LINQ查询expando对象集合

C# 使用动态LINQ查询expando对象集合,c#,linq,dynamic,C#,Linq,Dynamic,我有一个expando对象/动态对象的集合 var lst = new List<dynamic>(); dynamic exp1 = new ExpandoObject(); exp1.Name = "ddd"; lst.Add(exp1); dynamic exp2 = new ExpandoObject(); exp2.Name = "aaa"; lst.Add(exp2); 但是当我使用动态Linq库时 var query = lst.AsQueryable().Wh

我有一个expando对象/动态对象的集合

var lst = new List<dynamic>();   
dynamic exp1 = new ExpandoObject();
exp1.Name = "ddd";
lst.Add(exp1);
dynamic exp2 = new ExpandoObject();
exp2.Name = "aaa";
lst.Add(exp2);
但是当我使用动态Linq库时

var query = lst.AsQueryable().Where("Name==@0", "ddd");
我从动态linq库中得到一个解析异常


请帮助我实现这一点。

ExpandoObject
实现了
IDictionary
,因此您可以利用这一点:

var query = from t in lst
where ((IDictionary<string, object>)t)["Name"] == "ddd"
select t;
var query=从lst中的t开始
其中((IDictionary)t)[“Name”]=“ddd”
选择t;

Hi svick,我正在寻找动态LINQ支持来查询扩展对象的集合。此外,它直接与“.”一起工作。我假设您将
名称
作为一个字符串,而
不起作用。如果不是这样,为什么还需要动态LINQ?嗨,svick,简而言之,我正在尝试构建一个规则引擎。我需要一些可能的方法。现在,我正在尝试结合使用Expando对象和TypeDescriptionProvider,并在需要的地方更改动态Linq代码。我找到了解决方案。我用我自己的tokeniser实现。我认为程序员是完全不同的。现在我弄不清楚哪一个是活动的。请确认格兰特·温尼,谢谢你提供的信息
var query = from t in lst
where ((IDictionary<string, object>)t)["Name"] == "ddd"
select t;