Hej,
Takie zagadnienie - od frontu dostaję słownik <int, bool> gdzie klucz oznacza Id konta, a wartość decyduje, czy dane związane z tym kontem mają się znaleźć w zapytaniu. Można temat rozwiązać na dwa sposoby - albo jednym zapytaniem do bazy, albo porobić ileś tam zapytań i połączyć wyniki w jedną listę. Na obu niestety "poległem". Pierwsza próba:
var c = _context.Budgets.Where(c => c.Month >= pars.DateFrom && c.Month <= pars.DateTo);
foreach (var a in pars.SelectedAccounts)
if (a.Value)
c = c.Where(d => d.IdAccount == a.Key);
return c.ToList();
Niestety w ten sposób utworzyła się kwerenda z operatorami AND, a jak wiadomo zmienna nie może jednocześnie przyjąć różnych wartości, zatem dostałem pusty ciąg. No to zrobiłem inaczej:
List<Budget> budgets = new List<Budget> { };
foreach (var a in pars.SelectedAccounts)
{
if (a.Value == true)
{
var c = _context.Budgets.Where(c => c.Month >= pars.DateFrom && c.Month <= pars.DateTo)
.Where(d => d.IdAccount == a.Key)
.ToList();
budgets.Concat(c);
}
}
return budgets;
}
Ale mimo, że każde zapytanie się wykonuje poprawnie, to list łączyć nie chce... Gdzie błądzę?