2010-09-20 58 views
4

我對LINQ來說比較陌生,不知道如何去做一個Like條件。我有一個IEnumerable myObject列表,並希望像'Help%'這樣的myObject.Description。我怎樣才能做到這一點?由於喜歡LINQ的條件

+0

可能重複[像Lambda表達式和LINQ]工作(HTTP ://stackoverflow.com/questions/3616215/like-in-lambda-expression-and-linq) – 2010-09-20 15:04:41

+0

@All ....感謝您的意見和答案。非常有用和有用...... – MikeTWebb 2010-09-20 15:19:59

回答

2

您可以使用StartsWithEndsWith,或Contains這取決於您要查詢:

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

您可以選擇通過一個StringComparison指定是否忽略大小寫或不(爲StartsWithEndsWith),這將使操作起來更象一個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'和朋友還可以讓你指定比較類型。 – 2010-09-20 15:08:29

+0

@Matti - 我在第一個代碼示例之後提到。 – 2010-09-20 15:09:27

+0

哦,呃,好點!繼續。 – 2010-09-20 15:31:59

4

您通常會使用您在查詢之外使用的完全相同的語法。

myObject.Description.StartsWith("Help") 

這是否實際工作取決於你使用LINQ(它可能既可以跑了作爲代碼,在這種情況下,一切正常,或者被轉換成類似東西,如SQL哪裏,這可能有侷限性),但是,它總是值得一試。

1

可以使用string.StartsWithstring.EndsWithstring.Contains字符串財產使用它像操作。
Startswith會像 'A%'
的endsWith將爲LIKE '%A'
作品蘊含會像 '%A%' 的