【问题标题】:How to split a MULTIPLE integers values column in linq如何在linq中拆分多个整数值列
【发布时间】:2018-10-02 14:01:16
【问题描述】:

我必须使用 LINQ 根据列(数据类型:字符串)整数值过滤记录,例如 ID:3、34、35、36、98、43。

我也尝试使用 linq 中的拆分,这是我的方案

Banners = Banners.Where(Function(x) Not String.IsNullOrEmpty(x.IDs) AndAlso x.[IDs].Split(New Char() {","c}, StringSplitOptions.RemoveEmptyEntries).Select(Function(a) Convert.ToInt32(a)).Contains(3))

我的场景在对 ID 进行拆分时显示错误

失败:当前未在数据库服务器端执行“System.Linq.Enumerable:Contains(IEnumerable`1,Int32)”。

如何使用 linq 根据列 IDs 整数值过滤记录?

【问题讨论】:

  • 为什么不使用 regex.matches?

标签: asp.net .net vb.net linq


【解决方案1】:

您不能在 LINQ to SQL 中使用Split,但可以使用String.Contains,因此将Split/Contains 转换为String.Contains

Banners = Banners.Where(Function(x) Not String.IsNullOrEmpty(x.IDs) AndAlso (","+x.[IDs]+",").Contains(","+"3"+","))

【讨论】:

    【解决方案2】:

    将 .Contains 替换为 .Where(x=>x==3).FirstOrDefault() 并检查非空。

    如果那是您的数据结构,我个人会考虑重新设计数据库。如果这没有发生,请不要费心转换为 int。只需搜索字符串。

    【讨论】:

      【解决方案3】:

      我不确定你的横幅类 但我尝试了以下逻辑,效果很好

      Module Module1
      
          Sub Main()
              Dim Banners = New List(Of Banner)
      
              Banners = Banners.Where(Function(x) Not String.IsNullOrEmpty(x.IDs) AndAlso x.[IDs].Split(",").Select(Function(a) Convert.ToInt32(a)).Contains(3)).ToList()
          End Sub
      
      End Module
      
      Class Banner
          Private _IDs As String
      
          Public Property IDs() As String
              Get
                  Return "3,34,35,36,98,43"
              End Get
              Set(ByVal value As String)
                  _IDs = value
              End Set
          End Property
      
      End Class
      

      我唯一的改变是我在分配给横幅对象时在语句末尾添加了 ToList()

      【讨论】:

      • 这将是有帮助的,如果还了解否决票的原因。它只是黑匣子:P
      • 我得到了这个错误在数据库服务器端执行 'System.Linq.Enumerable:Contains(IEnumerable`1,Int32)' 目前没有实现。
      • 能否请您发布您的横幅收藏详情?
      • LINQ to Objects 和 LINQ to SQL 是完全不同的东西。
      • 它只是一个包含逗号分隔的整数,它的数据类型是字符串
      猜你喜欢
      • 2014-02-01
      • 2018-01-15
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 2018-10-12
      • 2021-06-30
      • 2019-07-18
      • 2017-06-21
      相关资源
      最近更新 更多