Составной пункт Где в LINQ не работает правильно - PullRequest
0 голосов
/ 06 июня 2019

У меня есть экран, где пользователь может вводить различные значения, чтобы добавить их в предложение 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»

...