将 IDictionary转换为优雅的方式是什么?到 IDictionary;

发布于 2024-11-03 00:43:58 字数 504 浏览 2 评论 0原文

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

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 方法来执行此操作。

I have a method I am not happy with, can you please show me how to do this better.

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);
}

This code works but I'm sure there is a nice linq'y way of doing this I am missing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清旖 2024-11-10 00:43:58
parameters.ToDictionary(k=>k.Key, v=>v.Value!=null?v.Value.ToString():(string)null);
parameters.ToDictionary(k=>k.Key, v=>v.Value!=null?v.Value.ToString():(string)null);
_畞蕅 2024-11-10 00:43:58
parameters.ToDictionary(k => k.Key, v => Convert.ToString(v.Value))

Convert.ToString() 对于您期望的 null 值返回 null

更新:

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

parameters.ToDictionary(k => k.Key, v => Convert.ToString(v.Value))

Convert.ToString() returns null on null-values which you would expect.

Update:

Convert.ToString(object) returns String.Empty but Convert.ToString(string) returns null. Unfortunately, that is not what you need. Weird definition in my opinion :-/

何止钟意 2024-11-10 00:43:58
parameters.ToDictionary(p => p.Key, p => p.Value.ToString())  // out of my head
parameters.ToDictionary(p => p.Key, p => p.Value.ToString())  // out of my head
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文