C#:用 CSV 中的单列填充组合框

Posted

技术标签:

【中文标题】C#:用 CSV 中的单列填充组合框【英文标题】:C#: Populate Combobox with single column in CSV 【发布时间】:2021-09-20 02:09:48 【问题描述】:

我有一个包含多列“项目名称”、“项目构建”的 csv 文件。我正在尝试仅使用项目名称列填充组合框。

项目名称列可能有多个重复名称,但重复名称应仅在组合框中出现一次作为选择选项。例如:在第 1 栏中,在“项目名称”下,丰田被列出 4 次,本田被列出 8 次。 Combobox 将包含 2 个东西,Toyota 和 Honda。

到目前为止,这是我的代码:

// Wehn 形式载荷___________________________________________________________________________________________________

    public void OnLoad(object sender, RoutedEventArgs e)
    
        StreamReader sr = new StreamReader(path);
        string column = sr.ReadToEnd();
        string[] eachColumn = column.Split(',');

        foreach (string s in eachColumn)
        
            
            Project_Name_Combobox.Items.Add(s);
        
    

当前代码为我获取了组合框下列出的由“,”分隔的整个 csv 内容(行和列)。 :(。任何帮助都将得到解决。

【问题讨论】:

您将“行”拆分为“列”,然后循环并添加所有内容。如果您只想要一列,请将它们全部保存到集合/数组中;。然后,如果您只想要独特的,请研究 .Distinct 以获得它。预处理完成后,然后将它们添加到组合中 谢谢你,但我不确定你想说什么。 【参考方案1】:

您必须从 csv 中分离出行和列,并分别存储您需要的任何内容,如下所示。

  public void OnLoad(object sender, RoutedEventArgs e)
    
        StreamReader sr = new StreamReader(path);
        List<string> ProjectNames = new List<string>();
        int lineNumber = 1;
        while (!sr.EndOfStream)
        
            var EachRow = sr.ReadLine();
            var Columns= EachRow.Split(',');
            if(lineNumber != 1)
            ProjectNames.Add(Columns[0]);           
            
             lineNumber++;                
        
       ProjectNames = ProjectNames.Distinct().ToList();
       foreach(var projectName in ProjectNames)
         Project_Name_Combobox.Items.Add(projectName);
                                   
          

【讨论】:

应该是sr.ReadLine();,是o型。 这是我的错。将 reader.ReadLine() 替换为 sr.ReadLine() 你不需要传递任何东西。它只会从您的项目名称中返回唯一值 @Jabir 请检查上面的编辑代码 @Jabir 我已经编辑了代码以排除标题。如果可能,请点赞并标记为答案

以上是关于C#:用 CSV 中的单列填充组合框的主要内容,如果未能解决你的问题,请参考以下文章

将特定行加载为组合框中的默认项

在 C# 中填充组合框的最快方法是啥? [关闭]

如何动态更改 C# 组合框或文本框中的自动完成条目?

使用大量项目填充组合框

将不同的表连接到 C# 组合框中的不同项目

如何创建一个可以一次填充多个组合框的方法?