表达式> 和 Sql IN
本文关键字:IN Sql T2 Func T1 表达式 TResult | 更新日期: 2023-09-27 18:33:33
我想使用表达式树来制作带有实体框架的过滤器。
所以这是我的类型
public class Type1
{
public string Name { get; set; }
}
public class Type2
{
public IEnumerable<string> Names { get; set; }
}
这是我的规格
public Expression<Func<Entities.Type1, bool>> MyExpression(Type2 filter)
{
//something like where name in (name[0], name[1], ... name[n])
}
我需要在类似 Sql 的地方转换它。
我该怎么做,最好的形式是什么?
如何使实体框架以我想要的方式理解我的任意表达式?
你可以像这样简单地做到这一点:
public Expression<Func<Type1, bool>> MyExpression(Type2 filter)
{
return x => filter.Names.Contains(x.Name);
}
你可以试试这个:
public Expression<Func<Type1, bool>> MyExpression(Type2 filter)
{
Expression<Func<Type1, bool>> expression = t1 => filter.Names.Contains(t1.Name);
return expression;
}
在这篇文章中,您可以找到为什么可以将lambda表达式转换为表达式树的良好解释。