如何将Dictionary <string,string =“”>中的每个键/值对复制到IDictionary?</string,>

时间:2014-02-21 15:21:54

标签: c# dictionary collections

我正在努力做到如下:

exception.Data = LoggedProperties;

但由于异常类的Data属性具有私有设置器,因此不被接受。

所以我想在第一个或第二个词典上继续使用ForAll。但是这个类没有类似的语法。

Dictionary.Keys都不允许这样做。

他们也没有AddRange

那么如何使用紧凑语法从一个字典复制到另一个字典呢?

即。使用Linq还是lambda表达式?

1 个答案:

答案 0 :(得分:2)

将您的异常包装在另一个 - (因为它是virtual属性,您可以覆盖它):

public class ExceptionTest : Exception
{
    private Dictionary<string, string> InternalData { get; set; }
    public ExceptionTest(Dictionary<string, string> data)
    {
        InternalData = data;
    }

    public override Dictionary<string, string> Data 
    {
        get 
        {
            return InternalData;
        }
    }
}

或者您也可以在每个回合中遍历调用.Data.Add的词典。

虽然两者都不漂亮。

至于复制字典,由于双方都是字典,所以很容易:

var newDictionary = new Dictionary<string, string>(originalDictionary);

或:

var newDictionary = originalDictionary.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);