2012-05-26 46 views
2

我想知道字符串是否包含字符。我嘗試以下 其中ViewBag.Options是一個字符串:使用.Contains檢查字符串是否包含字符時出錯

@ViewBag.Options.Contains('q') 

,但它給了我一個錯誤說:

爲「string.Contains(串)」的最佳重載的方法匹配具有一些無效參數。

+0

出於興趣,那你試試,當你得到了錯誤的信息?你瞭解錯誤嗎?你看看'string.Contains' *可以帶什麼? –

回答

8

它的寫法是:string.Contains沒有超載只需要一個字符。

選項:

  • 使用@ViewBag.Options.Contains("q")
  • 使用@ViewBag.Options.IndexOf('q') != -1
  • 使用一些更復雜的LINQy方法(例如Any) - 是可行的,但這裏沒有必要。 (我很喜歡LINQ 在適當的地方但我認爲這不是正確的方法;我不會爲了它而開始在我的代碼中引入lambda表達式)
  • 使用一些更復雜的常規表達方式 - 再次,沒有意義。
+0

爲什麼複雜,他可以做'@ ViewBag.Options.Any(x => x =='q');'? –

+1

@NikhilAgrawal:因爲'Contains(「q」)''更復雜嗎?我遠離反LINQ,但爲什麼使用一個使用lambda表達式的方法,當一個非常簡單的方法調用也可以正常工作? –

+0

那樣的話確定。 –

1

使用其中的任何

  • @ViewBag.Options.Contains("q");
  • @ViewBag.Options.Any(x => x == 'q');

如果你堅持

  • ​​

錯誤是不言自明的。 .Contains的參數需要一個字符串,並且此方法不會重載一個字符。

1

在c#中使用單引號表示一個字符。

嘗試用雙引號:

@ViewBag.Options.Contains("q"); 
1

使用此:

@ViewBag.Options.Contains("q") 
相關問題