1. ホーム
  2. c#

[解決済み] IEnumerableはCountメソッドを持っていません。

2023-05-09 05:03:11

質問

以下のようなメソッドがあります。

public bool IsValid
{
  get { return (GetRuleViolations().Count() == 0); }
}

public IEnumerable<RuleViolation> GetRuleViolations(){
  //code here
}

なぜ、私が .Count() を実行すると赤の下線が表示されるのはなぜですか?

以下のようなエラーが出ました。

エラー1 'System.Collections.Generic.IEnumerable' に に対する定義が含まれていません。 'Count' の定義がなく、拡張メソッドもありません。 'Count' の最初の引数を受け入れる タイプ 'System.Collections.Generic.IEnumerable' の最初の引数を受け入れる拡張メソッド 'Count' が見つかりません。 が見つかりませんでした (使用ディレクティブかアセンブリが不足しているのでしょうか)。 using directive or an assembly c:\usersa ┣documents┣visual studio 2010Projects ⑰NerdDinner ⑱Models.cs 15 47 NerdDinner

どのように解決するのですか?

追加します。

using System.Linq;

をソースの先頭に追加し、System.Coreアセンブリへの参照があることを確認します。

Count() が提供する拡張メソッドです。 System.Linq.Enumerable LINQ to Objects の静的クラス、および System.Linq.Queryable はLINQ to SQLやその他のアウトオブプロセスプロバイダ用です。

編集部:実際 Count() を使用することは、(少なくともLINQ to Objectsでは)比較的非効率的です。あなたが知りたいのは があるかどうかです。 要素があるかどうかだけですよね?その場合 Any() の方がしっくりきます。

public bool IsValid
{
  get { return !GetRuleViolations().Any(); }
}