在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。以下是我的代码。我正在使用Linq
和Csvhelper
。我用link 1和link 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数据框
在 Spark 中从具有不同标头的 CSV 文件形成 DataFrame