Почему не работает Contains в Linq

542
29 декабря 2016, 06:10

Сделал таблицу server side в Datatables. Все работает замечательно

Вот сам метод

   [HttpPost]
        public ActionResult LoadData()
        {
            //jQuery DataTables Param
            var draw = Request.Form.GetValues("draw").FirstOrDefault();
            //Find paging info
            var start = Request.Form.GetValues("start").FirstOrDefault();
            var length = Request.Form.GetValues("length").FirstOrDefault();
            //Find order columns info
            var sortColumn = Request.Form.GetValues("columns[" + Request.Form.GetValues("order[0][column]").FirstOrDefault()
                                    + "][name]").FirstOrDefault();
            var sortColumnDir = Request.Form.GetValues("order[0][dir]").FirstOrDefault();
            //find search columns info
            var book_name = Request.Form.GetValues("columns[0][search][value]").FirstOrDefault();

            int pageSize = length != null ? Convert.ToInt32(length) : 0;
            int skip = start != null ? Convert.ToInt16(start) : 0;
            int recordsTotal = 0;

            using (phoenixbookEntities db = new phoenixbookEntities())
            {
                var v = (from a in db.labirints select a);
                //SEARCHING...
                if (!string.IsNullOrEmpty(book_name))
                {
                    v = from b in db.labirints
                         where b.book_name.Contains(book_name)
                         select b;

                }
                //SORTING...  (For sorting we need to add a reference System.Linq.Dynamic)
                if (!(string.IsNullOrEmpty(sortColumn) && string.IsNullOrEmpty(sortColumnDir)))
                {
                    v = v.OrderBy(sortColumn + " " + sortColumnDir);
                }
                recordsTotal = v.Count();
                var data = v.Skip(skip).Take(pageSize).ToList();
                return Json(new { draw = draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data = data },
                    JsonRequestBehavior.AllowGet);
            }
        }

Но возникла проблема с поиском, пишет что перечисление не дало результатов

 if (!string.IsNullOrEmpty(book_name))
                    {
                        v = from b in db.labirints
                             where b.book_name.Contains(book_name)
                             select b;

                    }

В этом месте. Проверил точкой остоновы, самое странное, когда я делаю так

 //SEARCHING...
            if (!string.IsNullOrEmpty(book_name))
            {
                v = v.Where(a => a.book_name == book_name);

            }

То все прекрасно работает. Не могу понять, почему не работает Containts.

READ ALSO
Как уменьшать высоту формы сверху вниз

Как уменьшать высоту формы сверху вниз

Хочу сделать всплывающие окна с эффектом плавного появления и исчезновенияЭффект хочу сделать такой:

464
Как скрыть пуск C#

Как скрыть пуск C#

В общем есть малоэкранное приложение на C#(написанное мною), которое накладывается поверх полноэкранного(чужое), при переходе на малоэкранное...

449
Чтение и запись массива в бинарный файл C#

Чтение и запись массива в бинарный файл C#

Всем доброго времени суток, есть бинарный файл, в который пишет программка написанная на С++ Builder, и которую мне нужно переписатьСтолкнулся...

697
Печать отчёта из XML

Печать отчёта из XML

Доброго времени суток

414