🤕
dynamic なオブジェクトの配列に対して LINQ しようとしたら、"Cannot use a lambda expression.."
エラー
こうしようとしたら、
var dynamicObjects = Jil.JSON.Deserialize<dynamic>(dynamicJSON);
var convertedArray = dynamicObjects.arrayDatas.Select(x => new { Id = x.id,... }).ToArray();
タヒんだ。
エラー文↓
Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type.
An expression tree may not contain a dynamic operation.
原因
dynamicObjectsがdynamicなので、コンパイラは.Selectって言われても、何の型の.Selectなのかわかりません。なので、明示的にキャストしてあげないと、評価できません。
対策
明示的にキャスト。
var dynamicObjects = Jil.JSON.Deserialize<dynamic>(dynamicJSON);
var convertedArray = ((IEnumerable<dynamic>)dynamicObjects.arrayDatas).Select(x => new { Id = x.id,... }).ToArray();
Discussion