我以前见过whereIn的实现。但我想知道谁能教我写一篇操作词"WhereAnyIn“。
例如: Ive an entities: Post - PostTag - Tag
我需要一个带有参数int[]标签I的查询,其中获取所有在给定列表中具有任何标签I的帖子。
我想不出来。
谢谢你的帮助。
发布于 2011-02-24 02:23:22
static void Main(string[] args)
{
int[] integers = Enumerable.Range(0, 10).ToArray();
Expression<Func<Post, bool>> expression = CreateWhereInExpression<Post, int>(p => p.Tag, integers);
}
static Expression<Func<TItem, bool>> CreateWhereInExpression<TItem, TValue>(Expression<Func<TItem, TValue>> lambda, TValue[] items)
{
if (lambda != null)
{
MemberExpression memberExpression = lambda.Body as MemberExpression;
if (memberExpression != null && memberExpression.Expression == lambda.Parameters[0])
{
Expression body;
if (items == null || items.Length == 0)
{
body = Expression.Constant(
true
);
}
else
{
body = items.Skip(1).Aggregate(
Expression.Equal(
memberExpression,
Expression.Constant(items[0])
),
(expression, item) => Expression.OrElse(
expression,
Expression.Equal(
memberExpression,
Expression.Constant(
item
)
)
)
);
}
return Expression.Lambda<Func<TItem, bool>>(
body,
lambda.Parameters
);
}
}
return null;
}https://stackoverflow.com/questions/1823916
复制相似问题