无法将类型 IEnumerable>' 隐式转换为 “IEnumerable

本文关键字:IEnumerable 转换 Metr List Metric 类型 | 更新日期: 2023-09-27 18:36:04

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

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

在这个静态类中,我为我的字典的部分键扩展了部分匹配功能,该键应返回一个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?)

无法将类型 IEnumerable<List<Metric>>' 隐式转换为 “IEnumerable<Metr

您的调用调用应该是这样的:

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

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

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

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

相关文章: