使用多个where子句创建Subsonic Dynamic Query

时间:2010-02-04 19:34:13

标签: subsonic subsonic3

我有以下代码在基类中。

        MyApp.MyDB = new MyApp.MyDB ();
        IRepository<T> repo = new SubSonicRepository<T>(db);
        CurrentTable = repo.GetTable();



        var s = db.SelectColumns(columnList.ToArray()).
                From(CurrentTable.Name).
                OrderAsc(CurrentTable.Descriptor.Name);

我的想法是我的所有类都可以调用此方法。

我刚刚意识到我可能需要一个'where'语句,并且可能有许多列名称和值要测试。

最好的办法是什么?

更新:我发现这可以在下方使用,但这是最佳做法吗?

//WhereClause is a Dictionary<string, string>
        int count = 0;
        foreach (var whereitem in WhereClause)
        {
            if (count == 0)
            {
                s.Where(whereitem.Key).IsEqualTo(whereitem.Value);
            }

            else
            {
                s.And(whereitem.Key).IsEqualTo(whereitem.Value);
            }

            count++;
        }

1 个答案:

答案 0 :(得分:1)

这稍微简化了逻辑:对于where子句,执行以下操作:

s.Where(1).IsEqualTo(1);

对于你所有的其他地方,你可以使用And's。