在C#中从CSV到Datagridview读取不同的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C#中从CSV到Datagridview读取不同的值相关的知识,希望对你有一定的参考价值。

我有一个CSV文件,其中A列将根据Image 1重复显示。从这个CSV文件中,我只希望我的datagridview显示来自A列的不同值,以及跳过标题为Name的图像列,如图1所示。所以我的datagridview应该按照Image 2显示。

但是,使用下面的代码,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(@"Usersd_simDesktop	est.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;
}
答案

您可以通过过滤记录来完成此操作

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

另一答案

您的过滤工作正常。您只需要将每一行添加到dataTable中。

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

以上是关于在C#中从CSV到Datagridview读取不同的值的主要内容,如果未能解决你的问题,请参考以下文章

在 DataGridView 中从 Access 数据库中读取数据

如何在streamlit中从用户读取csv文件并转换为pandas数据框

在C#中将CSV文件导出到DataGridview

在 Spark 中从具有不同标头的 CSV 文件形成 DataFrame

我的datagridview中的数据是从.csv文件中读取出来的。现在修改了datagridview,

使用 C# 使用 CSV 文件填充 DataGridView,并使用结果更新 Access 数据库