2013-10-25 63 views
0

我有數據庫產品。 產品名稱是「WINNER」。Linq匹配相同的值

如果我在名稱中添加新產品「獲勝者」,結果爲空。

我該如何匹配WINNER獲勝者是否一樣?

public ActionResult AddProduct(MyModel model) 
{ 

var Result = context.Product.Where(s => s.ProductName == model.NewProductName).FirstOrDefault(); 

return view(); 
} 

任何幫助將不勝感激。

+0

如果'context.Product'是由您的ORM管理的'IQueryable ',它應該「只是工作」。 –

+0

@ ta.speot.is只有'ProductName'的數據庫排序規則不區分大小寫。顯然,它不是。 –

+0

@GertArnold我認爲,但認爲它更像是OP使用IEnumerable 產品創建了自己的IContext接口。 –

回答

2
public ActionResult AddProduct(MyModel model) 
{ 
var Result = context.Product.Where(s => s.ProductName.ToUpper() == model.NewProductName.ToUpper()).FirstOrDefault(); 
return view(); 
} 
0

怎麼樣

var Result = context.Product.Where(s => s.ProductName.ToUpper() == model.NewProductName.ToUpper()).FirstOrDefault(); 
1

兩個產品名稱中使用ToLower()比較時:

var Result = context.Product 
        .Where(s => s.ProductName.ToLower() == model.NewProductName.ToLower()).FirstOrDefault(); 
0

不幸的是,對於匹配的LINQ到SQL不區分大小寫字符串沒有一種方法,因此您需要將兩個字符串轉換爲相同的外殼:

var Result = context.Product.Where(s => 
    // Make sure both sides are non-null for comparison 
    s.ProductName != null && model.NewProductName != null && 
    // Convert both strings to same case 
    s.ProductName.ToLower() == model.NewProductName.ToLower()).FirstOrDefault(); 
0

你可以使用EqualsStringComparison類型:

var Result = context.Product.FirstOrDefault(s => s.ProductName.Equals(model.NewProductName, StringComparison.InvariantCultureIgnoreCase)); 

我也FirstOrDefault()合併的Where()

有關字符串比較的更多信息,請參閱this post