Subsonic 使用大量where子句创建亚音速动态查询

Subsonic 使用大量where子句创建亚音速动态查询,subsonic,subsonic3,Subsonic,Subsonic3,我有一个基类中的以下代码 MyApp.MyDB = new MyApp.MyDB (); IRepository<T> repo = new SubSonicRepository<T>(db); CurrentTable = repo.GetTable(); var s = db.SelectColumns(columnList.ToArray()). From(Curr

我有一个基类中的以下代码

        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);
MyApp.MyDB=new MyApp.MyDB();
i预期回购=新的子存储库(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++;
        }
//where子句是一个字典
整数计数=0;
foreach(Where条款中的var Where项)
{
如果(计数=0)
{
s、 其中(whereitem.Key).IsEqualTo(whereitem.Value);
}
其他的
{
s、 和(whereitem.Key).IsEqualTo(whereitem.Value);
}
计数++;
}

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

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

对于所有其他where项,您可以使用And。

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

s.Where(1).IsEqualTo(1);
对于所有其他where项,您可以使用And