Создание Subsonic Dynamic Query с многочисленным предложением where - PullRequest
1 голос
/ 04 февраля 2010

У меня есть следующий код, который находится в базовом классе.

        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 Ответ

1 голос
/ 04 февраля 2010

Это немного упрощает логику: для предложения where сделайте что-то вроде этого:

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

Для всех остальных предметов вы можете использовать «А».

...