MVC C # Фильтр поиска - PullRequest
       2

MVC C # Фильтр поиска

0 голосов
/ 27 февраля 2019

Я пытаюсь отфильтровать записи из моей базы данных.Значение флажка после контроллера, если флажок установлен.

Когда я выбираю «a», он показывает, какая запись содержит «a»,
Но когда я выбираю «a, b», он показывает «a -b - a, b ", но я просто хочу, чтобы он показывал" a, b ".

Мой контроллер:

   public ActionResult GetProducts(List<string> filter)
   {
        List<Product> proc = new List<Product>();

        foreach (var item in filter)
        { 
           var model = db.Product.Where(x => x.tMal.Contains(item)).ToList();
            proc.AddRange(model);
        }
        return View(proc);

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Согласно ответу @Ezlo, я только что проверил это с некоторыми данными, я не мог написать это в ответе.Когда я запускаю

class Program
    {
        public static void Main(string[] args)
        {
            var list = GetProducts(new List<string> { "a", "b" });
            foreach (var val in list)
            {
                Console.WriteLine("Result:" + val);
            }

        }

        public static IEnumerable<string> GetProducts(List<string> filter)
        {
            List<Product> proc = new List<Product>();

            IQueryable<Product> query = new List<Product>
            {
                new Product
                {
                    tMal = "a,b",
                },
                new Product
                {
                    tMal = "a",
                },
                new Product
                {
                    tMal = "b",
                }
            }.AsQueryable();

            foreach (var item in filter)
            {
                query = query.Where(x => x.tMal.Contains(item));
            }

            proc.AddRange(query.ToList());
            return proc.Select(s => s.tMal);
        }
    }

    internal class Product
    {
        public string tMal;
    }

Вот результат, который я получил:

Result:a,b
0 голосов
/ 27 февраля 2019

Вам нужно связать несколько Where() с другими Contains() из ваших фильтров, прежде чем извлекать ваши значения из базы данных:

public ActionResult GetProducts(List<string> filter)
{
    List<Product> proc = new List<Product>();

    IQueryable<Product> query = db.Product;

    foreach (var item in filter)
        query = query.Where(x => x.tMal.Contains(item));

    proc.AddRange(query.ToList());

    return View(proc);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...