1

我刚开始学习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%"
4

3 回答 3

3

听起来你想使用StartsWith

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

Contains将匹配字符串中的任何地方,其中 asStartsWith仅在字符串的开头匹配(与 相同的逻辑Test%)。

于 2013-11-10T12:06:54.240 回答
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()。

于 2013-11-10T12:09:14.337 回答
1

您可以使用 contains 方法:

Dim results = From myRow In dt.AsEnumerable
              Where myRow("Test").Contains("Test")
              Select myRow
于 2013-11-10T12:08:25.257 回答