3

タイプでラムダ式を使用したいのですがIEnumerable<dynamic>、新しいラムダ式を使用すると、属性と座標で次のエラーが発生します。

Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type.

これが私のコードです

public static object returnFullSelectWithCoordinates(IEnumerable<dynamic> q)
        {
            return q.Select(b => new
            {
                route_id = b.b.route_id,
                name = b.b.name,
                description = b.b.description,
                attributes = b.b.route_attributes.Select(c => c.route_attribute_types.attribute_name),
                coordinates = b.b.coordinates.Select(c => new coordinateToSend { sequence = c.sequence, lat = c.position.Latitude, lon = c.position.Longitude })

            });

メソッドを機能させるための回避策はありますか?

4

1 に答える 1

0

は拡張メソッドであるためSelect<>、動的な型では機能しません。

を使用しても同じ結果が得られますEnumerable.Select<>

このクエリを試してください:

Enumerable.Select(q,(Func<dynamic,dynamic>)(b => new
        {
            route_id = b.b.route_id,
            name = b.b.name,
            description = b.b.description,
            attributes = b.b.route_attributes.Select(c => c.route_attribute_types.attribute_name),
            coordinates = b.b.coordinates.Select(c => new coordinateToSend { sequence = c.sequence, lat = c.position.Latitude, lon = c.position.Longitude })

        });
于 2013-06-06T09:15:52.600 に答える