gpt4 book ai didi

linq - 如何一次查询多个实体?

转载 作者:行者123 更新时间:2023-12-04 23:58:09 25 4
gpt4 key购买 nike

我正在尝试查询实体以根据过滤器返回多行。

例如在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com