实体框架,包含和条件运算符(使用charindex insted等)
本文关键字:charindex 使用 insted 条件运算符 框架 包含 实体 | 更新日期: 2023-09-27 18:23:58
我有以下语句:
l.StreamName.Contains(vid == user.Username ? "live" : "")
当我在服务器端捕获SQL时,它被转换为以下SQL:
CAST(
CHARINDEX(
CASE WHEN ('asdfg' = 'dfghy')
THEN N'live'
ELSE N''
END,
[Extent1].[StreamName]
) AS int)
) > 0
女巫显然不起作用,因为"的charindex永远不会大于0。这是EF中的一个错误,还是有什么我不明白的地方。从追踪其他类似的语句中,我看到EF翻译
l.StreamName.Contains("")
进入
[Extent1].[StreamName] like '%%'
这是有效的。
只需有条件地添加此筛选即可。不要试图生成like '%%'
(实际上这毫无意义)
if (vid == user.Username)
query = query.Where(l => l.StreamName.Contains("live"));
好吧,你应该这样做(如果你展示更多的代码会更容易)
.Where(l =>vid == user.UserName ? l.StreamName.Contains("live") : true)