Попытка сделать переключение в какой-нибудь iqueryable - PullRequest
0 голосов
/ 30 мая 2018

У меня есть пять столбцов Cc1, Cc2, Cc3 ... И у меня есть следующий оператор switch в «Any» для проверки в столбцах, основанных на ccLevel, но таблица test1 имеет 32 миллиона строк, и это занимает вечнополучить их, есть ли лучший способ сделать это быстрее?

if (_db.Test1.Any(x => CCLevels(x, ccLevel) == cCValue.CcCode))
        {
           some Message...
        }

if (_db.Test2.Any(x => CCLevels(x, ccLevel) == cCValue.CcCode))
        {
           some Message...
        }


private string CCLevels<T>(T x, string ccLevel) where T : IccLevels
    {
        string level = null;
        switch (ccLevel)
        {
            case "1":
                level = x.Cc1;
                break;
            case "2":
                level = x.Cc2;
                break;
            case "3":
                level = x.Cc3;
                break;
            case "4":
                level = x.Cc4;
                break;
            case "5":
                level = x.Cc5;
                break;
        }
        return level;
    }

Когда я делаю это, как показано ниже, это занимает секунду,

if (_db.Test1.Any(x => x.Cc1 == cCValue.CcCode))
        {
            some Message...
        }

if (_db.Test1.Any(x => x.Cc2 == cCValue.CcCode))
        {
            some Message...
        }
...