【问题标题】:What is the 'invalid argument' in my list.add我的 list.add 中的“无效参数”是什么
【发布时间】:2015-10-20 17:37:58
【问题描述】:
var reader = new StreamReader(File.OpenRead("d:\\DK\\DK_CSV.csv"));
List<Csv> CsvList = new List<Csv>();

while (!reader.EndOfStream)
{
    var line = reader.ReadLine();
    var values = line.Split(',');

    CsvList.Add(values[0]);
}

只是玩猴子排序。我能够将 CSV 中的 ReadallLines 读取到 Datatable 中,但我决定尝试使用 streamreader 并将 CSV 内容转储到我创建的列表中。我收到了这个错误。知道为什么吗??

错误 1 ​​最佳重载方法匹配 >for 'System.Collections.Generic.List.Add(MonkeySort.Csv)' 有 >一些无效参数 C:\Users\514653\Documents\Visual Studio 2013>\Projects\MonkeySort \MonkeySort\Program.cs 43 21 MonkeySort

****现在可以使用。这是更正后的编码。谢谢乔!!****

var reader = new StreamReader(File.OpenRead("d:\\DK\\DK_CSV.csv"));
            List<Csv> CsvList = new List<Csv>();
            Csv _Csv = new Csv();
            while (!reader.EndOfStream)
            {
                var line = reader.ReadLine();
                var values = line.Split(',');

                CsvList.Add(new Csv()
                    {
                        Position = values[0],
                        Name = values[1]
                    });

            }
            foreach(var item in CsvList)
            {
                Console.WriteLine(item.Position + item.Name);
                Console.ReadLine();
            }

【问题讨论】:

  • 您已经声明了List&lt;Csv&gt;,但您正在向该列表添加一个字符串。当然,两者(Csv 和字符串)是不一样的。请说明您的 Csv 类是如何定义的
  • 您正在向列表中添加一个字符串
  • 命名空间 MonkeySort { public class Csv { public string Position { get;放; } 公共字符串名称 { 获取;放; } } }
  • 在看到你的 Csv 课程后...为了完全纠正你的问题,我们需要更多信息来重写你的部分代码。你想做什么?
  • 我只是想将 CSV 文件的内容导入 List。我已经使用数据表完成了它,但是我从那里将它转储到 List 所以我想为什么要通过数据表。只需将它放在 List 中即可。我真的只是想通过使用 List 东西变得更好。对编程很陌生。

标签: c# .net list csv


【解决方案1】:

values[0] 是字符串类型

CsvList 的类型为 List&lt;Csv&gt;

您只能将 Csv 类型的对象添加到 List&lt;Csv&gt;

您不能将字符串添加到 List&lt;Csv&gt; 类型的列表中,除非您先将其转换为 Csv 对象。

编辑:

改用这个。

for (int i = 0; i < values.Count(); i++)
     CsvList.Add(
          new Csv()
          {
               Position = i.ToString(),
               Name = values[i]
          });

现在,您的 Csv 对象中似乎缺少一个 Value 字段?什么名字?是列标题吗?什么是职位?是列号吗?

【讨论】:

  • 谢谢乔,我需要实例化类自定义 CSV 类。我不知道会这样做。
  • 随机挑剔:如果Csv 定义了从string 的隐式转换,那么它也可以工作。但显然情况并非如此,OP 可能甚至不知道这些存在。
  • Joey 你是说在 Csv 中使用构造函数来进行转换?
  • @Puerto - 这是一种方法,但我猜乔伊是在谈论这个:msdn.microsoft.com/en-us/library/z5z9kes2%28VS.71%29.aspx 这样,所以可以这样说:Csv myCsvObject = values;如果设置正确,它会在后台将 string[] 转换为 Csv 对象。
猜你喜欢
  • 2015-03-18
  • 2015-07-06
  • 2014-12-30
  • 2014-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多