2

linqを使用してC#のChordオブジェクト(クラス)のリストをフィルタリングしようとしています。

私のクラスには次の機能があります

public List<Chord> FilterDictionary_byKey<Chord>(string theKey)
{
    var filteredList = from item in _chords
                       where item.KeyName == theKey
                       select item;

    return (List<Chord>)filteredList;
}

上記のChordはオブジェクト型であり、_chordsはリスト型のクラス変数です。

次に、私の呼び出しコードから、次のことを試しました。

List<Chord> theChords = globalVariables.chordDictionary.FilterDictionary_byKey("A");

明らかに、クラスからコードオブジェクトのフィルタリングされたリストを返そうとしています

ただし、コンパイルすると、コンパイラは

エラー1メソッド'ChordDictionary.chordDictionary.FilterDictionary_byKey(string)'の型引数を使用法から推測できません。タイプ引数を明示的に指定してみてください。C:\ Users \ Daniel \ Development \ Projects \ Tab Explorer \ Tab Explorer \ Forms \ ScaleAndChordViewer.cs7537タブエクスプローラー

4

2 に答える 2

2

推測されるタイプのfrom…<code>selectLINQクエリは、実際にはIEnumerable<T>、入力されたリストまたはコレクションではなく、オンデマンドで列挙されるシーケンスです。にキャストしてList<T>も、この列挙は発生しません。代わりに、ToList()またはを呼び出す必要がありますToArray()

発生するエラーに対処するには、次のようにします。戻り型もパラメーターもジェネリックではないため、メソッド宣言にはジェネリック型パラメーターを含めないでください。<Chord>次のメソッド名を削除するだけです。

public List<Chord> FilterDictionary_byKey(string theKey)
{
    var filteredList = from item in _chords
                       where item.KeyName == theKey
                       select item;

    return filteredList.ToList();
}
于 2012-05-17T20:05:03.873 に答える
1
List<Chord> theChords = globalVariables.chordDictionary.FilterDictionary_byKey<Chord>("A");
于 2012-05-17T19:49:04.543 に答える