2013-11-10 3 views
1

Ive только начал изучать Linq. Ive просто создал образец теста, как это.Запрос LIKE в 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, используя%? Я не могу заставить его работать.

Ive пытался

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

try .Contains() – LINQ2Vodka

ответ

3

Звуки для меня, как вы хотите использовать StartsWith т.е.

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

Contains будет соответствовать где-нибудь в строке, где, как StartsWith будет соответствовать только если он в начале строка (такая же логика, как Test%).

1

Вы можете использовать содержит метод:

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

Вы migh искать содержит.

Взгляните на это:

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().

Смежные вопросы