2016-10-05 5 views
0

일부 JSON을 읽고 동적 목록으로 변환 중입니다. var id = result[0].id;가 작동하는 것 같군 동안Linq.Dynamic 사용 동적 목록의 메서드에서 오류가 발생합니다

var filtereddata = result.Where("id==1"); 

오류 No property or field 'id' exists in type 'Object를 제공

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"); 

라인 : 다음은 내 코드입니다.

내가 구문 분석 오전 JSON은 다음과 같습니다

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

}] 
} 

더 자세한 정보가 필요한 경우 알려 주시기 바랍니다. 귀중한 시간을 가져 주셔서 감사합니다.

편집 : var filtereddata = result.Where(c=>c.id==1).Select("id");도 람다 식을 사용했지만 여전히 동일한 문제를 시도했습니다.

+1

나는 동적 LINQ는'dynamic' 유형과 작동합니다 생각하지 않습니다. –

+0

왜 동적입니까? 왜 poco하지? http://json2csharp.com/ – tym32167

+0

poco를 사용할 수 없으며 정확한 입력란이 다를 수 있습니다. 동적을 사용해야합니다. 다른 해결책이 있다면 동적 Linq 나는 그것을 확인할 수 있습니다 –

답변

2

동적 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); 
+0

잘 정의 된 익명 투영이 가능하다면 왜 처음에는'IEnumerable '을 만들면 직접 만들 수 있습니까? schema post Json read –

+1

@MrinalKamboj 왜 OP가 내부적으로'동적''JArray' /'JObject' /'JProperty'를 생성하는'JObject'를 파싱하기로 결정했는지 알지 못합니다. 대답은 단지 구체적인 유스 케이스를 다루는 것입니다. –