2011-02-10 65 views

回答

1

反正平等比較,我建議有兩種方法:

db_user = db.CBR_User.FirstOrDefault(p => p.Codice_Fiscale.Equals(code, StringComparison.OrdinalIgnoreCase)); 

或者

db_user = db.CBR_User.FirstOrDefault(p => p.Codice_Fiscale.ToUpper() == code.ToUpper()); 

如果你不想那些,你可以使用StartsWith,包含等,用參數StringComparison.OrdinalIgnoreCase。

+0

我也注意到,取決於你的數據庫(SQL 2008)可能不區分大小寫。 –

+0

是的,的確...它取決於數據庫 – Francisco

3

您可以使用Contains()

db_user = db.CBR_User.FirstOrDefault(p => p.Codice_Fiscale.Contains(code)); 
+0

-1 Contains()可以用來替代SQL。但是,它是區分大小寫的,沒有內置的不區分大小寫的等價物。查看關於Contains的MSDN文章的備註部分:http://msdn.microsoft.com/en-us/library/dy85x1sa.aspx – Corin

+0

Contains在SQL中被轉換爲'LIKE',並且它對大小寫不敏感。 'WHERE名稱LIKE'%rob%''返回與'WHERE名稱LIKE'%ROB%''相同的結果。 –

+0

實際上'LIKE'的大小寫敏感性取決於數據庫中的排序規則設置。您提到的MSDN鏈接與EF生成的SQL無關。 –

0

在LINQ to實體你有一個像StartsWith,的endsWith功能,幷包含,如果你想要做的,你可以使用,而不是像

1

我知道這是一個老話題,但什麼Kristof Claes在說擴大,

db_user = db.CBR_User.FirstOrDefault(p => p.Codice_Fiscale.ToUpper().Contains(code.ToUpper())); 

,如果你使用ToUpper選項,它會表現得好像它是一個不區分大小寫的搜索。你可以使用ToLower來做同樣的事情,以防萬一你有那種嗜好。