我是c#高级编程的新手,所以很多时候我都很难掌握。
我正在尝试扩展我的自定义Dictionary对象,该对象具有自定义类和键值对的自定义类列表。
在这个静态类中,我正在为我的字典的部分键扩展部分匹配功能,该部分键应返回List<T>
而不是仅T
。
public static class GADictionaryExtention
{
internal static List<T> PartialMatch<T>(this Dictionary<KeyDimensions, T> dictionary,
KeyDimensions partialKey)
{
IEnumerable<KeyDimensions> fullMatchingKeys = null;
fullMatchingKeys = dictionary.Keys.Where(currentKey => currentKey.Contains(partialKey));
List<T> returnedValues = new List<T>();
foreach (KeyDimensions currentKey in fullMatchingKeys)
{
returnedValues.Add(dictionary[currentKey]);
}
return returnedValues;
}
}
在我的调用代码中,我尝试通过以下代码访问所有List<T>
结果。
List<List<Metric>> m1 = DataDictionary.PartialMatch(kd);
但是我收到以下错误。
Cannot implicitly convert type
'System.Collections.Generic.IEnumerable<System.Collections.Generic.List<Metric>>'
to 'System.Collections.Generic.IEnumerable<Metric>'.
An explicit conversion exists (are you missing a cast?)
答案 0 :(得分:1)
您的调用应该是这样的:
List<Metric> m1 = DataDictionary.PartialMatch(kd);
因为您从扩展方法返回List<T>
。
<强>更新强>
根据你的评论T = List<Metric>
,我认为你应该如下所示:
List<List<Metric>> m1 = (List<List<Metric>>)DataDictionary.PartialMatch(kd);