2008-12-08 3 views
1

Я пытаюсь написать текстовое поле, которое будет искать по 5 столбцам БД и будет возвращать каждый результат данного поиска, например. «Красный» вернется: красный шар, красный Уильямс и т. Д. Любые примеры или подобные вещи, которые люди пытались. Мой пример кода для поиска.Запрос LINQ для возврата нескольких результатов

Спасибо.

ItemMasterDataContext db = new ItemMasterDataContext(); 

    string s = txtSearch.Text.Trim(); 
    var q = from p in db.ITMSTs 
      where p.IMITD1.Contains(s) || 
      p.IMITD2.Contains(s) || 
      p.IMMFNO.Contains(s) || 
      p.IMITNO.Contains(s) || 
      p.IMVNNO.Contains(s) 
      select p; 

    lv.DataSource = q; 
    lv.DataBind(); 
+0

Так в чем же проблема? Что не так с вашим кодом? Вы на самом деле не сказали, каков ваш вопрос. ;) – jalf 2008-12-08 16:58:33

+0

во второй jalf: какая у вас проблема? – 2008-12-08 20:13:40

ответ

0

Вы можете сделать что-то вроде этого (синтаксис может быть выключен)

using(var db = new ItemMasterDataContext()) 
{ 
    var s = txtSearch.Text.Trim(); 
    var result = from p in db.ITMSTs select p; 

    if(result.Any(p=>p.IMITD1.Contains(s)) 
     lv.DataSource = result.Where(p=>p.IMITD1.Contains(s)) 
    else if (result.Any(p=>p.IMITD2.Contains(s)) 
     lv.DataSource = result.Where(p=>p.IMITD1.Contains(s)) 

    lv.DataBind(); 
} 

или вы можете использовать эту Link или это Link от MSDN.

Happy Coding !!

1

«q» в вашем примере будет IQueryable<ITMST>. Я не думаю, что свойство Datasource WebControl знает, что с этим делать. попробуйте записать эту строку как:

lv.DataSource = q.ToList(); 
0

Что вы, как правило, будете делать с помощью linq. Если вы хотите получить более сложные и использовать дикие карты базы данных, взгляните на класс SqlMethods в System.Data.Linq.

@ James Curran Вы можете назначить свойство DataSource q, и оно будет работать нормально. Единственное отличие заключается в том, когда запрос выполняется.

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