2014-04-22 120 views
0

我正在實現一個搜索按鈕,該按鈕將拉出用戶將在文本框中輸入的文字的所有產品。Linq包含()

說出用戶類型:鞋子。

我編寫我的LINQ查詢數據庫返回一個包含在任一列的關鍵字的所有產品,如下

var products = from x in db.Products 
where x.SupplierId == loggedInUser && 
(x.Status.ToString().Contains(searchCriteria) || 
x.SupplierCode.Contains(searchCriteria) || 
x.ProductId.ToString().Contains(searchCriteria) || 
x.Barcode.Contains(searchCriteria) || 
x.Description.Contains(searchCriteria) || 
x.ProposedActiveDate.ToString().Contains(searchCriteria) || 
x.VATRate.ToString() .Contains(searchCriteria)) 
select x; 

問題?

我沒有從數據庫中得到任何產品(數據庫中有產品)。

我做錯了什麼?

+0

我能想到的兩件事情可能是:SupplierId不匹配loggedInUser,或區分大小寫。 –

回答

-1

我認爲你沒有執行查詢。

這樣使用。

var products = from x in db.Products 
where x.SupplierId == loggedInUser && 
(x.Status.ToString().Contains(searchCriteria) || 
x.SupplierCode.Contains(searchCriteria) || 
x.ProductId.ToString().Contains(searchCriteria) || 
x.Barcode.Contains(searchCriteria) || 
x.Description.Contains(searchCriteria) || 
x.ProposedActiveDate.ToString().Contains(searchCriteria) || 
x.VATRate.ToString() .Contains(searchCriteria)) 
.ToList(); 
+0

無法正常工作,.ToList()無法識別。出錯。 –

+0

你得到的錯誤是什麼?刪除ToString()方法並嘗試。我認爲.net ToString()不會與數據庫查詢。 –

0

我認爲你有順序不對...

如果用戶輸入了鞋,靴子,那麼你需要拆分搜索字詞「鞋」和「靴子」,並將它們添加到列表<>然後執行以下

SearchTermsList.Contains(x.Status.ToString()) || SearchTermsList.Contains(x.SupplierCode) 
0
var searchCriteriaLowerCase = lowerCase.ToLower(); 
    var products = db.Products.Where(x=> x.SupplierId == loggedInUser && 
    x.Status.ToLower().ToString().Contains(searchCriteriaLowerCase) || 
    x.SupplierCode.ToLower().Contains(searchCriteriaLowerCase) || 
    x.ProductId.ToLower().ToString().Contains(searchCriteriaLowerCase) || 
    x.Barcode.ToLower().Contains(searchCriteriaLowerCase) || 
    x.Description.ToLower().Contains(searchCriteriaLowerCase) || 
    x.ProposedActiveDate.ToString().Contains(searchCriteria) || 
    x.VATRate.ToLower().ToString().Contains(searchCriteria)).ToList(); 

這可能工作。