2010-09-20 2 views
4

Я относительно новичок в LINQ и не знаю, как это сделать. У меня есть IEnumerable список myObject и вы хотите сделать что-то вроде myObject.Description, например «Help%». Как я могу это сделать? БлагодаряПодобное условие в LINQ

+0

возможный дубликат [Как и в лямбда-выражения и LINQ] (HTTP : //stackoverflow.com/questions/3616215/like-in-lambda-expression-and-linq) –

+0

@Все .... спасибо за комментарии и ответы. Очень полезно и полезно ...... – MikeTWebb

ответ

5

Посмотрите здесь:

http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/10/16/linq-to-sql-like-operator.aspx

Отрывок:

StartsWith и Contains:

var query = from c in ctx.Customers 
      where c.City.StartsWith("L") && c.City.Contains("n") 
      select c; 

И если вы должны использовать его с помощью LINQ к SQL (не работает с LINQ to Objects):

Пользовательские LIKE (System.Data.Linq.SqlClient.SqlMethods.Like):

var query = from c in ctx.Customers 
      where SqlMethods.Like(c.City, "L_n%") 
      select c; 
2

Вы можете использовать StartsWith, EndsWith или Contains в зависимости, где вы хотите, чтобы проверить:

var result = from o in myCollection 
      where o.Description.StartsWith("Help") 
      select o; 

При желании вы можете передать StringComparison, чтобы указать, следует ли игнорировать регистр или нет (для StartsWith и EndsWith), который будет сделать операцию ведут себя больше как запрос SQL:

var result = 
    from o in myCollection 
    where o.Description 
     .StartsWith("Help", StringComparison.InvariantCultureIgnoreCase)) 
    select o; 

Если вы хотите сделать регистронезависимы содержит, вам нужно использовать IndexOf вместо:

var result = 
    from o in myCollection 
    where o.Description 
     .IndexOf("Help", StringComparison.InvariantCultureIgnoreCase) > 0 
    select o; 
+0

'StartsWith' и друзья также позволяют указать тип сравнения. –

+0

@ Matti - Я упоминаю это сразу после первого примера кода. –

+0

Ох ... э-э, хороший момент! Продолжать. –

4

Обычно вы используете тот же синтаксис, который вы использовали бы вне запроса.

myObject.Description.StartsWith("Help") 

ли это на самом деле работает, зависит от того, где вы используете LINQ (это может быть либо побежал в качестве кода, в этом случае все работает, или преобразуются в нечто вроде еще, такие как SQL, которые могут иметь ограничения), но это всегда стоит попробовать.

1

вы можете использовать string.StartsWith или string.EndsWith или string.Contains свойство строки, чтобы использовать его в качестве Как оператора.
StartsWith будет работать, как 'A%'
EndsWith будет работать на LIKE '% A'
Содержит будет работать как '% A%'

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