Есть ли способ отфильтровать ненулевые данные из коллекции ObservableCollection? - PullRequest
0 голосов
/ 07 мая 2019

Есть ли способ фильтрации и группировки данных из коллекции ObservableCollection, значения которой больше нуля?

У меня есть файл Excel, который загружается в ObservableCollection, но внутри файла могут быть некоторые значения с нулем, и с этими критериями мне нужно выполнить запрос в SQL, чтобы получить некоторые данные, но с этими нулевыми кодами, когда я запускаю запрос ничего не возвращает.

Пример

enter image description here

Мне нужно создать запрос для каждой из этих комбинаций, но в моей коллекции ObservableCollection содержится более 90 тыс. Записей. Я ищу умное решение для группировки всех записей по одному шаблону (в данном случае строки 3 и 4 для пример) не обязательно иметь одинаковые значения, только один и тот же шаблон для запуска одного большого запроса со всеми этими кодами.

В настоящее время я делаю это следующим образом:

foreach (var item in _sourceStructure)
        {
            query = prepareQuery(item);
            RunQuery(query);
            if (errorMessage.Length > 1)
            {
                Console.WriteLine(errorMessage);
            }
            query = "";
        }

И в моем методе preparQuery у меня есть что-то вроде этого

query = @"SELECT Column1, Column2, Column3, Column4 FROM SomeTable WHERE "

if (!string.IsNullOrEmpty(item.Column1.ToString()) && item.Column1.ToString() != "0")
                {
                    query = query + "Column1= " + "'" + item.Column1.ToString() + "'" + " and ";
                }
                if (!string.IsNullOrEmpty(item.Column2.ToString()) && item.Column2.ToString() != "0")
                {
                    query = query + "Column2= " + "'" + item.Column2.ToString() + "'" + " and ";
                }

Это работает "отлично", но занимает много времени. Если вы найдете лучшее решение, я могу попробовать, я просто ищу совет.

1 Ответ

1 голос
/ 07 мая 2019

Прекратите вызывать ToString так много раз. Вы должны сделать это один раз и сохранить значение. И рассмотрите возможность использования string.Format или StringBuilder. Добавление очень ресурсоемкое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...