0

我是 c# 高级编程的新手,所以很多东西对我来说都是非常新的。

我正在尝试扩展我的自定义 Dictionary 对象,该对象具有自定义类和键值对的自定义类列表。

在这个静态类中,我正在为我的字典的部分键扩展部分匹配功能,它应该返回 aList<T>而不是只返回 one 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?)
4

1 回答 1

1

您的调用应该是这样的:

List<Metric> m1 = DataDictionary.PartialMatch(kd);

由于您是List<T>从扩展方法返回的。

更新: 根据您的评论,T = List<Metric>我认为您应该将结果转换如下:

List<List<Metric>> m1 = (List<List<Metric>>)DataDictionary.PartialMatch(kd);
于 2013-10-20T16:13:08.343 回答