LINQ with IN 子句完全匹配
LINQ with IN clause with exact matches
我正在使用 LINQ 查询我的数据库,我的记录有一个状态(活动、非活动、保留、待定等)。当我执行包含非活动状态的操作时,它也 return 处于活动状态,因为它确实包含该值。
我的 UI 允许用户勾选他们想要 return 的状态,我将其作为数组传递到我的后端。我知道在 LINQ 中做一个 IN 子句是这样的 "where statuses.contains(t.Status)"。我的问题是,如果我传入 Inactive,它将匹配 active,因为它确实包含这个词。在 T-SQL 中,如果我有 WHERE status IN ('Inactive') 它只会 return 记录不活动。有没有人做过类似 T-SQL IN 子句的事情?
这里没有代码很难说清楚你想要什么。
但这就是我的猜测...
您正在执行 .Contains("active")
并且返回的行也是 Inactive
?
的状态
如果是这样,你就不能做这样的事情吗?
var active = rows.Where(r => { r.status == "active" });
如果这不正确,请 post 一些代码来帮助我们一点。
谢谢。
好吧,我不好意思说我的问题是因为它使用的是带有逗号分隔值的字符串,而不是字符串数组。一旦我切换到字符串数组,我的查询就使用了 IN 子句而不是 CHARINDEX。
对于我的问题没有更具体,我深表歉意。 @mjwills 我发现你在我刷新后得到了答案。
我正在使用 LINQ 查询我的数据库,我的记录有一个状态(活动、非活动、保留、待定等)。当我执行包含非活动状态的操作时,它也 return 处于活动状态,因为它确实包含该值。
我的 UI 允许用户勾选他们想要 return 的状态,我将其作为数组传递到我的后端。我知道在 LINQ 中做一个 IN 子句是这样的 "where statuses.contains(t.Status)"。我的问题是,如果我传入 Inactive,它将匹配 active,因为它确实包含这个词。在 T-SQL 中,如果我有 WHERE status IN ('Inactive') 它只会 return 记录不活动。有没有人做过类似 T-SQL IN 子句的事情?
这里没有代码很难说清楚你想要什么。
但这就是我的猜测...
您正在执行 .Contains("active")
并且返回的行也是 Inactive
?
如果是这样,你就不能做这样的事情吗?
var active = rows.Where(r => { r.status == "active" });
如果这不正确,请 post 一些代码来帮助我们一点。
谢谢。
好吧,我不好意思说我的问题是因为它使用的是带有逗号分隔值的字符串,而不是字符串数组。一旦我切换到字符串数组,我的查询就使用了 IN 子句而不是 CHARINDEX。
对于我的问题没有更具体,我深表歉意。 @mjwills 我发现你在我刷新后得到了答案。