0

次のことを試みると:

   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 を実行する必要がありますか?

4

1 に答える 1

1

次のコードは、私が必要とすることを実現しますが、最も美しいとは言えません。

    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());
    }
于 2013-10-31T15:19:23.397 に答える