【问题标题】:converting a textbox into Dictionary将文本框转换为字典
【发布时间】:2011-12-07 17:10:24
【问题描述】:

我正在尝试将文本框条目转换为双精度字典。即

输入文本是:

1,63
2,31
3,78
4,83

然后我用逗号 (,) 分隔行。

我有下面的代码 - 但 IEnumerable 不起作用。任何帮助将不胜感激!

 string input = txtInput.Text;
    List<string> list = new List<string>(
                               input.Split(new string[] { "\r\n" },
                               StringSplitOptions.RemoveEmptyEntries));

    IEnumerable<Dictionary<double, double>> dict = list.Select(row => row.Split(','))
    .Select(pair => new Dictionary<string, string>(double.Parse(pair[0]), double.Parse(pair[1])));

【问题讨论】:

    标签: c# linq dictionary ienumerable


    【解决方案1】:

    听起来你可能想要:

    var dictionary = input.Lines
                          .Select(line => line.Split(','))
                          .ToDictionary(array => double.Parse(array[0]),
                                        array => double.Parse(array[1]));
    

    但是:

    • 这假设分割线都具有正确的位数(并且您使用的区域性使用“.”作为小数分隔符;否则您会遇到问题)
    • 这假设每一行都有可解析的 long
    • 比较double 值是否相等(字典要求)通常是个坏主意。可以改用intdecimal 吗?

    【讨论】:

    • 它还假设没有用逗号进行数字分组,但人们希望它不会发挥作用,或者这就是你的第一个子弹的意思?
    • @AustinSalonen:有点,是的。
    • @Jon - 感谢您的回答,我正在尝试使用上述内容,但收到此错误:“字符串”不包含“线条”的定义,并且没有扩展方法“线条”接受可以找到“字符串”类型的第一个参数(您是否缺少 using 指令或程序集引用?)
    • @Rob:抱歉,应该是txtInput.Lines。我误读了你的代码。
    猜你喜欢
    • 2017-11-08
    • 2022-07-05
    • 1970-01-01
    • 2020-12-16
    • 2023-03-15
    • 2021-06-19
    • 1970-01-01
    相关资源
    最近更新 更多