我想按名称属性过滤我的实体。我使用Contains()方法。当我将参数作为“E”传递时,它可以工作,但如果我作为变量传递则不起作用。
代码如下:
if (!String.IsNullOrWhiteSpace(searchingModel.LanguageNameContains))
query = query.Where(n => n.Name.Contains(searchingModel.LanguageNameContains));
if (!String.IsNullOrWhiteSpace(searchingModel.LanguageCodeContains))
query = query.Where(n => n.Code.Contains(searchingModel.LanguageCodeContains));
return query;
以上示例不起作用。但如果我这样写的话
if (!String.IsNullOrWhiteSpace(searchingModel.LanguageNameContains))
query = query.Where(n => n.Name.Contains("E"));
if (!String.IsNullOrWhiteSpace(searchingModel.LanguageCodeContains))
query = query.Where(n => n.Code.Contains("En"));
return query;
有效。我调试了很多次。我将相同的参数作为变量和常量传递。如果我作为常量传递它可以工作,但如果我作为变量传递它不起作用。奇怪的是,相同的代码工作MySql.Data.Entity 6.9.3但现在我使用6.9.5,它不起作用。这是一个错误还是我的错误?
生成的SQL: - 当我将参数作为变量传递时:
选择
Extent1
。Id
,
Extent1
。Code
,
Extent1
。Name
来自Languages
AS Extent1
在Extent1
。Name
LIKE'%p__linq__0%'
- p__linq__0:'E'(Type = String,Size = 1)
- 于2014年12月30日22:30:40 +02:00执行
- 在0 ms内完成,结果为:EFMySqlDataReader
当我作为实习字符串传递时:
选择
Extent1
。Id
,
Extent1
。Code
,
Extent1
。Name
来自Languages
AS Extent1
在Extent1
。Name
LIKE'%E%'
第二个返回行,但第一个不返回任何行。