作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试查询实体以根据过滤器返回多行。
例如在 SQL 中我们有:
SELECT * FROM table WHERE field IN (1, 2, 3)
如何在 LINQ to Entities 中执行此操作?
最佳答案
虽然我确实收到了一些及时的答复,但我感谢大家。我收到的回复中显示的方法无效。
我不得不继续搜索,直到我最终在 Microsoft Forums 的 Frederic Ouellet 的帖子中找到了我需要的方法。 .
简单来说就是下面的扩展方法:
public static IQueryable<T> WhereIn<T, TValue>(this IQueryable<T> source, Expression<Func<T, TValue>> propertySelector, params TValue[] values)
{
return source.Where(GetWhereInExpression(propertySelector, values));
}
public static IQueryable<T> WhereIn<T, TValue>(this IQueryable<T> source, Expression<Func<T, TValue>> propertySelector, IEnumerable<TValue> values)
{
return source.Where(GetWhereInExpression(propertySelector, values));
}
private static Expression<Func<T, bool>> GetWhereInExpression<T, TValue>(Expression<Func<T, TValue>> propertySelector, IEnumerable<TValue> values)
{
ParameterExpression p = propertySelector.Parameters.Single();
if (!values.Any())
return e => false;
var equals = values.Select(value => (Expression)Expression.Equal(propertySelector.Body, Expression.Constant(value, typeof(TValue))));
var body = equals.Aggregate<Expression>((accumulate, equal) => Expression.Or(accumulate, equal));
return Expression.Lambda<Func<T, bool>>(body, p);
}
关于linq - 如何一次查询多个实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/663143/
我是一名优秀的程序员,十分优秀!