当我尝试以下操作时:
public List<MatterViewModel> ReturnMatchingMatters(IEnumerable<string> matterNames)
{
var filter = PredicateBuilder.True<tblMatter>();
filter = x => matterNames.Any(mattername => mattername.ToLowerInvariant() == x.Matter.ToLowerInvariant());
return this.dal.DB.GetList<MatterViewModel>(OrmLiteConfig.DialectProvider.ExpressionVisitor<tblMatter>().Where(filter).ToSelectStatement());
}
我收到错误:
variable 'x' of type '[...]tblMatter' referenced from scope '', but it is not defined
([...]我的)
基本上,我想要实现的是,如果事物字符串包含在任何事项中,则谓词返回true。
我错过了什么?我是否需要使用临时变量进行某种foreach?
答案 0 :(得分:0)
以下代码完成了我需要做的事情,尽管可能不是最漂亮的。
public List<string> ReturnMatchingMatters(IEnumerable<string> matterNames)
{
var filter = PredicateBuilder.True<tblMatter>();
filter = x => Sql.In(x.Matter, matterNames);
SqlExpressionVisitor<tblMatter> ev = OrmLiteConfig.DialectProvider.ExpressionVisitor<tblMatter>();
ev.Select("select Matter from tblmatter");
ev.Where(filter);
return this.dal.DB.GetList<string>(ev.ToSelectStatement());
}