2009-06-06 2 views
0

Я пытаюсь предоставить пользователю список элементов в таблице базы данных при вводе ключевых слов в текстовое поле. В настоящее время проблема заключается в том, что пользователь может ввести несколько ключевых слов, и я хотел бы иметь возможность выполнять только одну обратную пересылку в базу данных и возвращать сопоставления результатов нескольким ключевым словам (операция ИЛИ). Есть ли способ выполнить такую ​​задачу без необходимости попадания в базу данных для каждого ключевого слова?«Where In» с linq to sql

ответ

1

Я нашел post, которые предлагают довольно хорошее решение того, чего я пытался достичь. Спасибо за помощь!

0

Я нашел this page очень полезно при попытке выяснить, LINQ материал в C#. Он предлагает the following syntax:

var results = from Item i in myCollectionOfItems 
       where i.OneThing = aGoodThing || i.SomeStuff != theBadStuff 
       select i; 

EDIT: К сожалению, не поняли вопрос - я обновил, чтобы соответствовать запрос на OR операции. (Я не мог найти || синтаксис на странице ссылок, но я предполагаю, что это будет работать. Это compiles on my machine ...

5

Содержит() является вашим другом.

List<string> keywords = new List<string>(); 
keywords.Add("foo"); 
keywords.Add("bar"); 

var results = from item in db.Table 
       where keywords.Contains(item.Description) 
       select item; 

... дает

WHERE [t0].[Description] IN (@p0, @p1) 
+0

Это не сработает, если вы хотите узнать, содержит ли описание ключевое слово ... –

+0

Я хотел бы иметь что-то в строке подсказки google. ключевое слово не должно быть идеальным совпадением – ak3nat0n

0

разметить ваш выход для ваших ключевых слов поиска.

Вы можете просто продолжать говорить или в C# (оператор ||) в где условия.

т.е.

var query = from row in mytable 
      where (row.column == a) || (row.column == b) || //.... etc 
      select row 
0

Вы могли бы попробовать, что:

List<string> keywords = new List<string>(); 
keywords.Add("foo"); 
keywords.Add("bar"); 

var results = from item in db.Table 
       where keywords.Exists(k => item.Description.Contains(k)) 
       select item; 

Но я не уверен, что будет конвертировать в SQL ...

Смежные вопросы