LINQ: Как переписать предложение WHERE в запросе? - PullRequest
2 голосов
/ 18 ноября 2011

Мой простой запрос по одному ключевому слову работает следующим образом:

   var query = from product in dc.catalog 
                        where product.Name.Contains("table")
                        select product;

Я хочу обеспечить большую гибкость в запросе и получать ключевые слова из текстового поля, которое может быть получено из строки, такой как «таблица красный круглый». Здесь я хочу, чтобы результат имел записи, которые содержат ВСЕ 3 слова (красный, круглый, таблица) В ЛЮБОМ ПОРЯДКЕ.

Как мне переписать предложение WHERE, чтобы справиться с этим? Спасибо.

Ответы [ 4 ]

2 голосов
/ 18 ноября 2011
var a = from product in dc.catalog  
            where textbox1.Text.Split(' ').All(nam => product.Name.Contains(nam)) 
            select product; 
2 голосов
/ 18 ноября 2011

Как насчет этого (только что заметил, что вы хотите все ):

var query = from product in dc.catalog 
            where textBox.Text.Split(' ').All(s => product.Name.Contains(s))
            select product;
1 голос
/ 18 ноября 2011

Посмотрите на функцию Except

например

var query = from product in dc.catalog 
                    where !selectedItems.Except(product.Name).Any()
                    select product;
1 голос
/ 18 ноября 2011
// You can produce these matches using any method (string.Split, e.g.)
// Just make sure that they're an array or a list.
var matches = new[]{"table", "red", "round"};
var query = from product in dc.catalog 
            where matches.All(m => product.Name.Contains(m))
            select product;
...