Ich habe einen sehr großen Datensatz. Um die Abfrageleistung zu optimieren, erstelle ich Abfragen basierend darauf, welche Filter ein Benutzer ausgewählt hat.Abfragestruktur und Syntax für mehrere Filteroptionen
using (_db)
{
if (string.IsNullOrEmpty(CompanyID))
{
if (string.IsNullOrEmpty(HealthplanCode))
{
foreach (string x in _db.BM_OPT_MASTER.Select(y => y.OPT).Distinct())
{
currentComboBox.Items.Add(x);
}
}
else
{
foreach (string x in _db.BM_OPT_MASTER.Where(y => y.HPCODE == HealthplanCode).Select(y => y.OPT).Distinct())
{
currentComboBox.Items.Add(x);
}
}
}
else
{
if (string.IsNullOrEmpty(HealthplanCode))
{
foreach (string x in _db.BM_OPT_MASTER.Where(y => y.COMPANY_ID == CompanyID).Select(y => y.OPT).Distinct())
{
currentComboBox.Items.Add(x);
}
}
else
{
foreach (string x in _db.BM_OPT_MASTER.Where(y => y.COMPANY_ID == CompanyID && y.HPCODE == HealthplanCode).Select(y => y.OPT).Distinct())
{
currentComboBox.Items.Add(x);
}
}
}
}
Wie Sie sehen können, kann dies ziemlich ärgerlich werden, da immer mehr Filteroptionen hinzugefügt werden. Gibt es eine Möglichkeit, diesen Code so zu refactorisieren, dass die Abfrage immer noch optimiert wird, ohne auf verschachtelte if else-Anweisungen angewiesen zu sein?