Есть ли лучший способ сделать эту функцию?Несмотря на то, что я делаю фактический запрос внутри фонового рабочего, в приложении есть небольшая пауза во время выполнения запроса, поэтому мне было интересно, есть ли более быстрый способ сделать это.
По сути, queries
проверяет набор данных на предмет уникальных результатов из определенных столбцов, чтобы заполнить комбинированный список этими элементами.Это позволяет нам не кодировать какие-либо параметры в фильтрах, и если мы добавляем элементы на сервер для этих значений, они добавляются при следующем обновлении набора данных автоматически.
Я просто неуверен, что используемые мной методы могут быть выполнены в более коротком и быстром формате:
private IEnumerable<string> queryStatus;
private IEnumerable<string> queryPriority;
private IEnumerable<string> queryCompany;
private IEnumerable<string> queryCategory;
private void filterBuilder_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
Console.WriteLine(DateTime.Now.ToString());
DataTable demoCriteria = Ds.Tables[1];
queryStatus = (demoCriteria.AsEnumerable().Select(row => row.Field<string>("ows_Status"))).Distinct();
queryPriority = (demoCriteria.AsEnumerable().Select(row => row.Field<string>("ows_Priority"))).Distinct();
queryCompany = (demoCriteria.AsEnumerable().Select(row => row.Field<string>("ows_Company"))).Distinct();
queryCategory = (demoCriteria.AsEnumerable().Select(row => row.Field<string>("ows_Category"))).Distinct();
}
private void filterBuilder_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
{
foreach (string row in queryStatus)
{
if (!viewFilter_Status.Items.Contains(row))
viewFilter_Status.Items.Add(new ComboBoxItem(row,
row));
if (!editStatus.Items.Contains(row))
editStatus.Items.Add(new ComboBoxItem(row,
row));
if (!newStatus.Items.Contains(row))
newStatus.Items.Add(new ComboBoxItem(row,
row));
}
foreach (string row in queryPriority)
{
if (!viewFilter_Priority.Items.Contains(row))
viewFilter_Priority.Items.Add(new ComboBoxItem(row,
row));
if (!editPriority.Items.Contains(row))
editPriority.Items.Add(new ComboBoxItem(row,
row));
if (!newPriority.Items.Contains(row))
newPriority.Items.Add(new ComboBoxItem(row,
row));
}
foreach (string row in queryCompany)
{
if (!viewFilter_Company.Items.Contains(row))
viewFilter_Company.Items.Add(new ComboBoxItem(row,
row));
if (!editCompany.Items.Contains(row))
editCompany.Items.Add(new ComboBoxItem(row,
row));
if (!newCompany.Items.Contains(row))
newCompany.Items.Add(new ComboBoxItem(row,
row));
}
foreach (string row in queryCategory)
{
if (!viewFilter_Product.Items.Contains(row))
viewFilter_Product.Items.Add(new ComboBoxItem(row,
row));
if (!editProduct.Items.Contains(row))
editProduct.Items.Add(new ComboBoxItem(row,
row));
if (!newProduct.Items.Contains(row))
newProduct.Items.Add(new ComboBoxItem(row,
row));
}
MainFormCallbacks.EnableISTab(true);
}