0

LINQは初めてですか?助けてください次のジェネリックLambda関数をラムダ式にどのように変換しますか?

objects.Where(objects=>values.Contains(objects.DistrictId) );

直接の呼び出しなしで完全なラムダ式を作成しようとしています。何かのようなもの :

var innerItem = Expression.Parameter(typeof(Objects), "objects");
var innerProperty = Expression.Property(innerItem, "ID");
var innerMethodExpression = Expression.Call(innerProperty,null);
var innerLambda = Expression.Lambda<Func<Objects, bool>>(innerMethodExpression, innerItem);

var outerItem = Expression.Parameter(typeof(int[]), "item");
var containsMethod = typeof(string).GetMethod("Contains", new[] { typeof(int) });

var containsMethodExpression = Expression.Call(innerMethodExpression, containsMethod, innerLambda);
var outerLambda = Expression.Lambda<Func<Objects, bool>>(containsMethodExpression, outerItem);

collection = collection.AsQueryable<Objects>().Where(outerLambda);

しかし、私は何が悪いのか理解できません

4

1 に答える 1

0

あなたの例では、

ラムダ関数は

objects.Where(objects=>values.Contains(objects.DistrictId) );

したがって、ラムダ式は次のようになります

Expression<Func<Objects, int>> ObjectsExp = objects=>values.Contains(objects.DistrictId);

DistrictIdがoutResultの整数型であると想定します。

于 2012-05-22T12:33:36.603 に答える