C#实现将CSV文件内容添加至列表的技术问询
解决CSV内容转人员列表的问题
嘿,我来帮你把CSV里的内容转成人员列表!你已经完成了文件读取的第一步,接下来只需要把每行分割的数据映射到自定义的人员对象里,再加入列表就好啦。
第一步:定义人员类
首先我们需要一个类来存储职位、工号、姓氏、名字、性别这些属性,这样后续处理数据会更清晰:
public class Person { public string Position { get; set; } // 职位 public string EmployeeId { get; set; } // 工号 public string LastName { get; set; } // 姓氏 public string FirstName { get; set; } // 名字 public string Gender { get; set; } // 性别 }
第二步:完善你的ReadTest方法
接下来修改你现有的代码,创建List<Person>来存储数据,逐行解析CSV内容并添加到列表中:
private static void ReadTest() { int count = 0; string line; char c = ';'; // 创建存储人员信息的列表 List<Person> peopleList = new List<Person>(); using (StreamReader file = new StreamReader("Listing.csv")) { // 跳过表头(如果你的CSV第一行是标题的话,这行可以保留;没有表头就删掉) file.ReadLine(); while ((line = file.ReadLine()) != null) { // 用分号分割每行内容 string[] data = line.Split(c); // 确保分割后的数组长度符合我们需要的属性数量,避免索引越界 if (data.Length >= 5) { Person person = new Person(); // 按顺序赋值(这里要和你CSV里的列顺序对应!) person.Position = data[0]; person.EmployeeId = data[1]; person.LastName = data[2]; person.FirstName = data[3]; person.Gender = data[4]; // 添加到列表 peopleList.Add(person); count++; } } } // 这里可以加个输出验证,看看列表里的数据对不对 Console.WriteLine($"一共读取了 {count} 条人员信息"); foreach (var person in peopleList) { Console.WriteLine($"{person.FirstName} {person.LastName} - {person.Position}"); } }
几个关键注意点:
- 列顺序对应:上面的代码假设你的CSV列顺序是
职位;工号;姓氏;名字;性别,如果你的CSV列顺序不一样,一定要调整data[index]的索引值! - 表头处理:如果你的CSV第一行是字段名称(比如“职位,工号...”),记得用
file.ReadLine()跳过,不然表头会被当成一条无效数据。 - 资源释放:我把
StreamReader放在using块里,程序会自动释放文件资源,比手动调用Close()更安全可靠。 - 异常防护:实际项目里可以添加异常捕获逻辑(比如
try-catch),处理文件不存在、数据格式错误等情况,避免程序崩溃。
内容的提问来源于stack exchange,提问作者Ruben Amar
相关产品推荐
相关产品推荐

