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类型的类变量。

然后从我的调用代码中我尝试了以下操作:

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

显然试图从类中返回经过过滤的 Chord 对象列表

然而,当我编译编译器返回

错误 1 ​​无法从用法中推断方法“ChordDictionary.chordDictionary.FilterDictionary_byKey(string)”的类型参数。尝试明确指定类型参数。C:\Users\Daniel\Development\Projects\Tab Explorer\Tab Explorer\Forms\ScaleAndChordViewer.cs 75 37 Tab Explorer

4

2 回答 2

2

...<code>select LINQ 查询的推断类型from实际上是 an IEnumerable<T>,它不是填充列表或集合,而是将按需枚举的序列。将其转换为List<T>不会导致此枚举;相反,您应该调用ToList()or 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 回答