Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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.Dynamic where方法会产生错误_C#_Linq_Dynamic_Dynamic Linq - Fatal编程技术网

C# 使用带有动态列表的Linq.Dynamic where方法会产生错误

C# 使用带有动态列表的Linq.Dynamic where方法会产生错误,c#,linq,dynamic,dynamic-linq,C#,Linq,Dynamic,Dynamic Linq,我正在阅读一些JSON并将其转换为动态列表。 下面是我的代码: dynamic data = JObject.Parse(response); var result = data.result; var result = ((IEnumerable)arr).Cast<dynamic>().ToList(); var id = result[0].id; var filtereddata = result.Where("id==1"); 给出错误类型“Object中不存在属性或字

我正在阅读一些JSON并将其转换为动态列表。 下面是我的代码:

dynamic data = JObject.Parse(response);
var result = data.result;
var result = ((IEnumerable)arr).Cast<dynamic>().ToList();

var id = result[0].id;
var filtereddata = result.Where("id==1");
给出错误
类型“Object
中不存在属性或字段“id”,而
var id=result[0]。id似乎正在工作

我正在解析的JSON是:

{
"count": 1,
"result": [
{
  "id": 11,
  "name": "Locations",

}]
}
如果需要更多信息,请告诉我。谢谢你宝贵的时间

编辑:
甚至尝试了
var filtereddata=result.Where(c=>c.id==1.Select(“id”)使用lambda表达式,但仍然存在相同的问题。

动态LINQ不适用于
动态
类型。LINQ to Objects可以工作,但由于您以
string
的形式接收筛选器,因此它不适用

解决方法是在应用动态
Where
之前使用临时匿名投影,然后选择返回原始对象:

var filtereddata = result
    .Select(x => new { item = x, id = (int)x.id, name = (string)x.name })
    .Where("id==1")
    .Select(x => x.item);

动态LINQ不适用于
Dynamic
类型。LINQ to Objects可以工作,但由于您以
string
的形式接收筛选器,因此它不适用

解决方法是在应用动态
Where
之前使用临时匿名投影,然后选择返回原始对象:

var filtereddata = result
    .Select(x => new { item = x, id = (int)x.id, name = (string)x.name })
    .Where("id==1")
    .Select(x => x.item);

我认为动态LINQ不适用于
动态
类型。为什么是动态的?为什么不是poco?我不能使用poco,exacts字段可能会有所不同。所以必须使用动态。如果有其他的解决方案,那么动态Linq我也可以检查,那么常规Linq呢?e、 g.
Where(x=>x.id==1)
。实际上,我将Where条件作为字符串“id==1”。这就是为什么我使用动态LINQ的原因。我不认为动态LINQ与
Dynamic
类型一起工作。为什么是动态的?为什么不是poco?我不能使用poco,exacts字段可能会有所不同。所以必须使用动态。如果有其他的解决方案,那么动态Linq我也可以检查,那么常规Linq呢?e、 g.
Where(x=>x.id==1)
。实际上,我将Where条件作为字符串“id==1”。这就是为什么我使用动态LinqIf匿名投影到一个定义良好的项目是可行的,那么为什么首先创建
IEnumerable
,可以直接创建模式post Jsonread@MrinalKamboj我不知道OP为什么选择解析成
JObject
,它在内部创建
dynamic
JArray
/
JObject
/
JProperty
。答案只是涵盖了具体的用例。如果匿名投影到一个定义良好的场景是可行的,那么为什么首先要创建
IEnumerable
,可以直接创建模式post Jsonread@MrinalKamboj我不知道OP为什么选择解析成
JObject
,它在内部创建
dynamic
JArray
/
JObject
/
JProperty
。答案只是涵盖了具体的用例。