C# 实体框架以及在何处使用like
我正在使用以下说明:C# 实体框架以及在何处使用like,c#,entity-framework-4,where,C#,Entity Framework 4,Where,我正在使用以下说明: db_user = db.CBR_User.FirstOrDefault(p => p.Codice_Fiscale == code); 对于不区分大小写的manage,我希望使用“like”操作符 你怎么能做到 谢谢您可以使用Contains(): 在LINQ To Entity中,您可以使用StartsWith、EndsWith和Contains等函数来代替,如如果您想进行等式比较,我建议两种方法: db_user = db.CBR_User.FirstOrDe
db_user = db.CBR_User.FirstOrDefault(p => p.Codice_Fiscale == code);
对于不区分大小写的manage,我希望使用“like”操作符
你怎么能做到
谢谢您可以使用Contains()
:
在LINQ To Entity中,您可以使用StartsWith、EndsWith和Contains等函数来代替,如如果您想进行等式比较,我建议两种方法:
db_user = db.CBR_User.FirstOrDefault(p => p.Codice_Fiscale.Equals(code, StringComparison.OrdinalIgnoreCase));
或
如果您不想这样做,您可以使用StartsWith、Contains等参数StringComparison.OrdinalingOrecase。我知道这是一个老话题,但要扩展一下刚才说的内容
db_user = db.CBR_User.FirstOrDefault(p => p.Codice_Fiscale.ToUpper().Contains(code.ToUpper()));
如果您使用ToUpper选项,它将充当不区分大小写的搜索。如果您有这种嗜好,您可以使用ToLower做同样的事情。-1 Contains()可以用来代替SQL之类的。但是,它区分大小写,没有内置的不区分大小写的等效项。查看MSDN文章中关于Contains的备注部分:Contains在SQL中被翻译为类似于,不区分大小写
WHERE Name LIKE“%rob%”
返回的结果与WHERE Name LIKE“%rob%”
返回的结果相同。事实上LIKE
的大小写敏感性取决于数据库中的排序规则设置。您提到的MSDN链接与EF生成的SQL无关。LIKE的大小写敏感度确实基于数据库中的排序规则。然而,我发现这个问题的原因正是因为Contains的行为是区分大小写的,即使列的排序规则不区分大小写,我也在寻找Contains的不区分大小写的替代方法。我还注意到,根据您的数据库(sql 2008)可能不区分大小写。是的,的确。。。这取决于数据库
db_user = db.CBR_User.FirstOrDefault(p => p.Codice_Fiscale.ToUpper() == code.ToUpper());
db_user = db.CBR_User.FirstOrDefault(p => p.Codice_Fiscale.ToUpper().Contains(code.ToUpper()));