2011-02-09 2 views

ответ

7

EDIT: Учитывая «ответ», вы в курсе, это выглядит, как может быть, вы хотите Contains вместо этого. Вот здесь действительно полезно потратить некоторое время на объяснение того, что вы пытаетесь сделать в этом вопросе, - обратитесь за советом к моему question-writing guide.

Таким образом, вы можете хотите:

var query = list.Where(item => item.Name.Contains(textBox1.Text)); 

кажется мне нравится:

var query = from item in db.Tell 
      where item.Name.StartsWith("N") && item.Name.EndsWith(textBox1.Text) 
      select item; 

Это, если вы на самом деле означает запрос, который вы написали. Если вы включите «N» в попытке сделать это Unicode строку, вы просто хотите:

var query = from item in db.Tell 
      where item.Name.EndsWith(textBox1.Text) 
      select item; 

Другой вариант - если вы используете LINQ к SQL - это использование SqlMethods.Like:

var query = from item in db.Tell 
      where SqlMethods.Like(item.Name, "N%" + textBox1.Text) 
      select item; 

Вы также можете использовать «свободную нотацию» или «точечную нотацию» вместо выражения запроса для любого из них. Например, последний из которых эквивалентно:

var query = db.Tell.Where(item => SqlMethods.Like(item.Name, 
                "N%" + textBox1.Text)); 

и первый эквивалентно:

var query = db.Tell.Where(item => item.Name.EndsWith(textBox1.Text)); 

Или, если вы используете только List<T>, что-то вроде:

var query = list.Where(item => item.Name.EndsWith(textBox1.Text)); 

Обратите внимание, что если вы используете код, который вы опубликовали, у вас есть уязвимость в SQL-инъекции - никогда не создавайте SQL, используя введенные пользователем данные напрямую. Вместо этого используйте параметризованные запросы - или что-то вроде LINQ, который будет использовать параметризованный запрос для вас.

+0

Имеет ли EndsWith правильное преобразование в LIKE на сервере (или следует использовать http://msdn.microsoft.com/en-us/library/bb355235.aspx?) – driis

+0

@driis: Я ожидал, что это будет преобразованный в LIKE, да. –

+1

Разве это не 'item.Name.StartsWith (" N ") и item.Name.EndsWith (textBox1.Text)'? – goenning

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