LINQ Query для возврата нескольких результатов - PullRequest
1 голос
/ 08 декабря 2008

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

Спасибо.

    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();

Ответы [ 3 ]

1 голос
/ 08 декабря 2008

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

 lv.DataSource = q.ToList();
0 голосов
/ 10 декабря 2008

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

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();
}

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

Счастливое кодирование !!

0 голосов
/ 10 декабря 2008

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

@ Джеймс Керран Вы можете назначить свойство DataSource q, и оно будет работать нормально. Разница лишь в том, когда запрос выполняется.

...