【发布时间】:2020-01-07 10:04:40
【问题描述】:
我正在使用 LINQ 查询我的数据库,并且我的记录有一个状态(活动、非活动、保留、待定等)。当我使用非活动状态执行包含时,它也会返回活动状态,因为它确实包含该值。
我的 UI 允许用户检查他们想要返回的状态,我将这些状态作为数组传递给我的后端。我知道在 LINQ 中执行 IN 子句就像“where statuses.contains(t.Status)”。我的问题是,如果我传入 Inactive 它将匹配 active 因为它确实包含这个词。在 T-SQL 中,如果我有 WHERE 状态 IN ('Inactive'),它只会返回非活动的记录。有没有人做过类似 T-SQL IN 子句的事情?
【问题讨论】:
-
statuses是什么?枚举列表? -
您还需要发布代码。目前还不是很清楚你在做什么。什么是状态?
-
Contains是IEnumerable和String上的一个方法,所以当你提到where statuses.contains(t.Status)时不清楚你在使用什么 -
@Zoey 很可能创建了一个带有逗号分隔值的字符串
"a,b,c"。当她应该使用 array 字符串["a", "b", "c"]时。 stackoverflow.com/questions/44991481/… 可能值得一读。 -
如果我没看错,问题是“非活动”包含“活动”。这意味着您正在检查一个字符串是否包含一个字符串,而不是检查一组字符串是否包含一个字符串。但无论哪种方式,如果没有一些代码,这是不可能回答的。
标签: c# string linq contains in-clause