![](/img/trans.png)
[英]What is an elegant LINQ way to IDictionary<TranslatorTags, IEnumerable<string>> to IDictionary<TranslatorTags, 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.Empty
但Convert.ToString(string)
返回null
。 不幸的是,这不是你需要的。 我认为奇怪的定义: - /
parameters.ToDictionary(p => p.Key, p => p.Value.ToString()) // out of my head
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.