2013-08-29 3 views
0

я получаю это работает нормально:Linq поисковый запрос с использованием ||

var results = db.GetProducts().Where(p => p.ProductName.Equals(searchQuery, StringComparison.OrdinalIgnoreCase)); 

Когда я использую || Comparision, чтобы получить мой новый запрос как:

var results = db.GetProducts().Where(p => p.ProductName.Equals(searchQuery, StringComparison.OrdinalIgnoreCase)) || db.GetProducts().Where(p => p.ProductId.ToString().Equals(searchQuery, StringComparison.OrdinalIgnoreCase)); 

Я в конечном итоге с:

Error 1 Operator '||' cannot be applied to operands of type 
'System.Collections.Generic.IEnumerable<Uppgift_1.Models.MyProduct>' and 
'System.Collections.Generic.IEnumerable<Uppgift_1.Models.MyProduct>' C:\Home\Programming 
\cSharp\projects\MVC_projects\Uppgift_1\Uppgift_1\Controllers\ProductController.cs 
    23 27 Uppgift_1 

Как я могу сделать, если я хочу, чтобы включить оба утверждения в поисковом запросе?

+0

Просто прочитайте текст сообщения об ошибке. Вы применяете || к двум последовательностям. – Vladimir

ответ

1

Вам необходимо установить оба условия в том же Where.

var results = db.GetProducts() 
       .Where(p => p.ProductName 
          .Equals(searchQuery, 
            StringComparison.OrdinalIgnoreCase) || 
          p.ProductId.ToString() 
          .Equals(searchQuery, 
            StringComparison.OrdinalIgnoreCase)); 
+0

ohh Я вижу, спасибо! –

1

Попробуйте это:

var results = db.GetProducts() 
    .Where(p => p.ProductName.Equals(searchQuery, StringComparison.OrdinalIgnoreCase) 
    || p.ProductId.ToString().Equals(searchQuery, StringComparison.OrdinalIgnoreCase)); 
Смежные вопросы