У меня есть экран, где пользователь может вводить различные значения, чтобы добавить их в предложение WHERE. Когда я тестирую только с 1 значением, мой код работает нормально. Когда я тестирую с более чем 1 значением, наборы результатов всегда равны 0.
Я проверил данные в базе данных, и данные из формы соответствуют ожиданиям. Несколько элементов в предикате WHERE не соответствуют друг другу.
где Клаус имеет тип Словарь
var lazydata = (from item in db.ComplaintLogWithRetailer
select item);
string val = "";
if (whereClause != null)
{
if (whereClause.Keys.Contains("CaseYear"))
{
val = whereClause["CaseYear"];
lazydata = lazydata.Where(w => w.CaseYearOnly.ToString().Equals(val));
}
if (whereClause.Keys.Contains("AssignedTo"))
{
val = whereClause["AssignedTo"];
lazydata = lazydata.Where(w => w.Initials.ToString().Equals(val));
}
if (whereClause.Keys.Contains("CaseNumber"))
{
val = whereClause["CaseNumber"];
lazydata = lazydata.Where(w => w.CaseNumber.ToString().Equals(val));
}
//if (whereClause.Keys.Contains("CountyId"))
// data = lazydata.Where(w => w.Count.ToString().Equals(whereClause["CountyId"])).ToList();
if (whereClause.Keys.Contains("ClassCode"))
lazydata = lazydata.Where(w => w.ClassCode.ToString().Equals(whereClause["ClassCode"]));
if (whereClause.Keys.Contains("DateReceived"))
lazydata.Where(w => w.ReceivedDate.ToString().Equals(whereClause["DateReceived"]));
if (whereClause.Keys.Contains("RetailerNumber"))
lazydata = lazydata.Where(w => w.RetailerNumber.ToString().Equals(whereClause["RetailerNumber"]));
data = lazydata.ToList();
//data = lazydata.ToList<ComplaintLogWithRetailer>();
//data = (from item in lazydata
// select item).ToList();
}
Есть 5 записей с 2018 годом, и 1 из этих записей имеет AssignedTo «BCC». Я ожидаю 1 запись назад, но всегда получаю 0 записей, когда выполняются 2 или более операций «.Where»