【问题标题】:LIKE query on DataTable using LINQ使用 LINQ 对 DataTable 进行 LIKE 查询
【发布时间】:2013-11-22 06:12:00
【问题描述】:

我刚开始学习 Linq。我刚刚创建了一个这样的示例测试。

            Dim dt As New DataTable

            Dim dc As New DataColumn

            dc.ColumnName = "Test"
            dt.Columns.Add(dc)

            dt.Rows.Add("Test")
            dt.Rows.Add("One test")
            dt.Rows.Add("Second test")

            Dim results = From myRow In dt.AsEnumerable
                          Where myRow("Test") = "Test"
                          Select myRow


            For Each Row In results
                Console.WriteLine(Row.Item(0).ToString())
            Next

这将返回迭代中的第一行。

但是如果我想通过 % 使用 LIKE 运算符呢?我无法让它工作。

我试过了

Where myRow("Test") LIKE "Test%"

【问题讨论】:

    标签: c# asp.net vb.net linq datatable


    【解决方案1】:

    听起来你想使用StartsWith,即

     Dim results = From myRow In dt.AsEnumerable
                   Where myRow("Test").StartsWith("Test")
                   Select myRow
    

    Contains 将匹配字符串中的任何位置,而 StartsWith 仅匹配位于字符串开头的位置(与 Test% 的逻辑相同)。

    【讨论】:

      【解决方案2】:

      您可能正在寻找包含。

      看看这个:

      var query = from mem in context.Member
          where mem.LastName.Contains("xxx")
          orderby mem.LastName, mem.FirstName
          select new
          {
              FirstName = mem.FirstName,
              LastName = mem.LastName,
          };
      

      您也可以使用 .StartsWith() 或 .EndsWith()。

      【讨论】:

        【解决方案3】:

        你可以使用 contains 方法:

        Dim results = From myRow In dt.AsEnumerable
                      Where myRow("Test").Contains("Test")
                      Select myRow
        

        【讨论】:

          猜你喜欢
          • 2021-05-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-29
          相关资源
          最近更新 更多