0

私は C# の高度なプログラミングに慣れていないので、その多くを理解するのは非常に新しいことです。

カスタム クラスとキーと値のペアのカスタム クラスのリストを持つカスタム Dictionary オブジェクトを拡張しようとしています。

この静的クラスでは、ディクショナリの部分キーの部分一致機能を拡張しています。これList<T>は、1 つではなく を返す必要があり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 に答える