【问题标题】:LINQ where clause contains certain valueLINQ where 子句包含特定值
【发布时间】:2015-08-22 16:18:41
【问题描述】:

我在 SQL 中有一个字段 "Code3",其值类似于 "A,B,C",在我的 linq 代码中,我如何选择包含 "B""Code3" 的记录?

Dim dc = New SchedulerDataContext()
Dim dataset As IEnumerable(Of Events_Tran)
dataset = From ev In dc.Events_Trans
          Where ev.Code3.Split(",").ToString = "A" Select ev

【问题讨论】:

  • 什么 LINQ,Linq-To-Sql?请注意,Split 返回一个数组,而ToString 无论如何都是没有意义的。
  • 那么你会得到像 "...has no supported translation to SQL" 这样的异常吗?
  • 不要在一列中存储多个值。几乎总是当您想在数据库记录上使用Split 时,您应该创建一个与该表相关的新表并分别存储每个令牌。

标签: asp.net vb.net linq


【解决方案1】:

如果您不能将这些值拆分到它们自己的表中(您可能应该这样做),那么这将为您完成这项工作。如果检查该值是否出现在列的开头、中间或结尾,以及是否是唯一值:

dataset = From ev In dc.Events_Trans _
          Where ev.Code3.StartsWith("A,") _
          Or ev.Code3.Contains(",A,") _
          Or ev.Code3.EndsWith(",A") _
          Or ev.Code3 = "A" _
          Select ev

【讨论】:

  • 删除了我的,因为您已更改为StartsWithEndsWith,所以这个答案是正确的。 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-06
相关资源
最近更新 更多