【发布时间】:2010-06-08 18:27:59
【问题描述】:
如何在我的 LINQ To SQL lambda 表达式中构建通配符?
这是我目前拥有的:
var query = from log in context.Logs select log;
foreach (string filter in CustomReport.ExtColsToFilter)
{
string tempFilter = filter;
query = query.Where(Log => Log.FormattedMessage.Contains(tempFilter));
}
在我尝试在过滤器字符串中传递通配符之前,这一切正常。我正在尝试SqlMethods.Like(),但无济于事。
上面的过滤器如下所示:"<key>NID</key><value>mcass</value>"。
我希望能够通过这样的过滤器:"<key>NID</key><value>%m%</value>"
【问题讨论】:
-
SqlMethods.Like应该可以工作。试一试会有什么结果? -
@Thorarin 生成的 SQL 与 .Contains() SQL 相同。也许我需要更多地关注嵌入通配符?
-
澄清一下,您是否将
"<key>NID</key><value>%m%</value>"传递给SqlMethods.Like并且仍然得到与没有%通配符时相同的结果? -
@Ahmad 实际上,没有。当我将您提到的字符串传递给 SqlMethods.Like() 方法时,SQL 输出是这样的: WHERE ([t0].[FormattedMessage] LIKE @p0 ESCAPE '~') ...interesting...
-
您了解您的具体情况吗?
标签: c# linq-to-sql lambda wildcard