【问题标题】:Read distinct values from CSV to Datagridview in C#在 C# 中从 CSV 读取不同的值到 Datagridview
【发布时间】:2019-04-20 05:10:30
【问题描述】:

我有一个 CSV 文件,其中 A 列将根据 Image 1 包含重复值。在这个 CSV 文件中,我只希望我的 datagridview 显示来自 A 列的不同值,并按照图片 1 跳过标题为 Name 的标题列。所以我的 datagridview 应该按照 @ 显示987654322@.

但是,使用下面的代码,datagridview 显示为Image 3。下面是我的代码。我正在使用LinqCsvhelper。我使用了link 1link 2 作为参考。希望能得到帮助

1 类

    public string Name
    {
      get; set;
    }

表格 3

private void Form3_Load(object sender, EventArgs e)
{ 
    //Create Datatable
    DataSet dts = new DataSet();
    DataTable dataTable = new DataTable();
    dataTable.Columns.Add("Username", typeof(string));

    //Read the data from the CSV file
    StreamReader streamReader = new StreamReader(@"\Users\d_sim\Desktop\test.csv");
    CsvReader reader = new CsvReader(streamReader);
    reader.Configuration.Encoding = Encoding.UTF8;
    reader.Configuration.Delimiter = ",";

    //Make Class 1 into a list.
    List<Class1> records = reader.GetRecords<Class2>().ToList();

    //Only Read the applicable property and display in datagridview. IRL Class1 has many properties but I only include one in this question
    var distinctbyproperty = records.GroupBy(x => x.Name).Select(x => x.First());
    dataTable.Rows.Add(distinctbyproperty.ToString());
    dts.Tables.Add(dataTable);
    this.dataGridView1.DataSource = dataTable;
    dataGridView1.AllowUserToAddRows = false;
}

【问题讨论】:

  • 顺便问一下class1的目的是什么?你不在代码中使用它?
  • @masyita shariff 在List&lt;Class1&gt; records = 行中确实使用了Class1。那里有个小bug,剩下的应该是reader.GetRecords&lt;Class1&gt;().ToList();

标签: c# linq csv csvhelper


【解决方案1】:

您可以通过过滤记录来做到这一点

records.GroubBy(x => x.Name).Select(x => x.First()).Distinct();

【讨论】:

  • 嗨@StuiterSlurf 感谢您的建议。我使用了您的解决方案,我的 datagridview 输出仍然相同,没有变化。
  • 它需要区分哪些属性? distinct 作用于整个元素。
【解决方案2】:

您的过滤工作正常。您只需将每一行单独添加到数据表中。

foreach (var item in distinctbyproperty)
{
    dataTable.Rows.Add(item.Name);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    相关资源
    最近更新 更多