繁体   English   中英

转换IDictionary的优雅方式是什么? <string, object> 到IDictionary <string, string>

[英]What is an elegant way to convert IDictionary<string, object> to IDictionary<string, string>

我有一个我不满意的方法,请你告诉我如何做得更好。

public Foo WithBar(IDictionary<string, object> parameters) {
    var strStrDict = new Dictionary<string, string>(parameters.Count);
    foreach(var pair in parameters)
    {
        strStrDict.Add(pair.Key, pair.Value != null ? pair.Value.ToString() : (string)null);
    }      
    // Call overload which takes IDictionary<string, string>  
    return this.WithBar(strStrDict);
}

这段代码有效,但我确信有一个很好的linq'y方式这样做我很想念。

parameters.ToDictionary(k=>k.Key, v=>v.Value!=null?v.Value.ToString():(string)null);
parameters.ToDictionary(k => k.Key, v => Convert.ToString(v.Value))

Convert.ToString()在您期望的null值上返回null

更新:

Convert.ToString(object)返回String.EmptyConvert.ToString(string)返回null 不幸的是,这不是你需要的。 我认为奇怪的定义: - /

parameters.ToDictionary(p => p.Key, p => p.Value.ToString())  // out of my head

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM