使用LINQ查询DataTable

时间:2013-11-10 12:03:46

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

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

3 个答案:

答案 0 :(得分:3)

听起来我想要使用StartsWith,即

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

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

答案 1 :(得分: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()。

答案 2 :(得分:1)

您可以使用contains方法:

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