:私はwhere
句をコメントアウトすると
Error 5 Could not find an implementation of the query pattern for source type 'System.Web.UI.WebControls.MenuItemCollection'. 'Where' not found. Consider explicitly specifying the type of the range variable 'i'.
は、私はこのエラーを取得します。この問題を解決するには、あなたはおそらく、クエリで明示的に要素の型を指定することによって行うことができ、
Cast
を呼び出したい:
var item = from MenuItem i in NavigationMenu.Items
where i.NavigateUrl.ToLower() == ThisPage.ToLower()
select i;
は、しかし、あなたのクエリは誤解を招くと命名された - それは、物事のシーケンスではありません単一項目。
また、大文字ではなく、StringComparison
を使用して文字列を比較することをお勧めします。たとえば:
var items = from MenuItem i in NavigationMenu.Items
where i.NavigateUrl.Equals(ThisPage,
StringComparison.CurrentCultureIgnoreCase)
select i;
私は、代わりに拡張メソッドを使用して検討したい:
var items = NavigationMenu.Items.Cast<MenuItem>()
.Where(item => item.NavigateUrl.Equals(ThisPage,
StringComparison.CurrentCultureIgnoreCase));
エラーとは何ですか? – Tim
今後の参考として、実際にはエラーメッセージを読む価値があります。これは私が持っているのとまったく同じアドバイスを与えられています:範囲変数のタイプを明示的に指定しています。 –
そのメッセージは、Linqステートメントの 'where'部分をコメントアウトしたときに発生します。 'where'ステートメントのコメントを外すと、別のエラーが出ました。 –