C# 将csv文件加载到datagridview并忽略带分隔符的单词

C# 将csv文件加载到datagridview并忽略带分隔符的单词,c#,datagridview,C#,Datagridview,我在一个C#项目中使用Csv文件和datagridview 我尝试加载带有2个分隔符“,”+“”的CSV文件“这是我的问题!我需要忽略逗号后的所有单词,但最后一个单词example.csv除外: 我希望在我的datagridview中显示如下: 如您所见,我的目标是添加CSV中的所有行,但如果出现逗号,则获取最后一个单词。到目前为止,我使用以下代码: System.IO.StreamReader fileReader = new System.IO.StreamReader(csvPath, f

我在一个C#项目中使用Csv文件和datagridview 我尝试加载带有2个分隔符“”+“”的CSV文件“这是我的问题!我需要忽略逗号后的所有单词,但最后一个单词example.csv除外:

我希望在我的datagridview中显示如下:

如您所见,我的目标是添加CSV中的所有行,但如果出现逗号,则获取最后一个单词。到目前为止,我使用以下代码:

System.IO.StreamReader fileReader = new System.IO.StreamReader(csvPath, false);
                        string fileRow;
                        string[] fileDataField;

                        //Reading Data
                        while (fileReader.Peek() != -1)
                        {
                            fileRow = fileReader.ReadLine();
                            fileDataField = fileRow.Split(';');
                            dataGridView1.Rows.Add(fileDataField);
                        }
                        fileReader.Dispose();
                        fileReader.Close();
System.IO.StreamReader fileReader=new System.IO.StreamReader(csvPath,false);
字符串[]fileDataField;
字符串文件行;
//读取数据
while(fileReader.Peek()!=-1){
fileRow=fileReader.ReadLine();
fileDataField=fileRow.Split(“;”);
//声明临时数组以临时存储值
string[]tempItems=新字符串[fileDataField.Length];
//循环遍历数组并执行逗号检查,
//如果字符串中有逗号,请将其剪切
//否则,只需添加正常值
for(int i=0;i
这应该行得通。您可以简单地切断字符串前面的部分,包括逗号,然后将其余部分添加到gridview。如果未找到逗号,则添加该值而不进行更改

编辑: 应使用数组而不是列表。

System.IO.StreamReader fileReader=new System.IO.StreamReader(csvPath,false);
字符串[]fileDataField;
字符串文件行;
//读取数据
while(fileReader.Peek()!=-1){
fileRow=fileReader.ReadLine();
fileDataField=fileRow.Split(“;”);
//声明临时数组以临时存储值
string[]tempItems=新字符串[fileDataField.Length];
//循环遍历数组并执行逗号检查,
//如果字符串中有逗号,请将其剪切
//否则,只需添加正常值
for(int i=0;i
这应该行得通。您可以简单地切断字符串前面的部分,包括逗号,然后将其余部分添加到gridview。如果未找到逗号,则添加该值而不进行更改

编辑:
应该使用数组而不是列表。

您可以使用Linq来解决此问题。只需添加对
System.Linq
的引用,并设置
fileDataField
,如下所示:

fileDataField = fileRow.Split(';')
               .Select(e=> e.LastIndexOf(",") >= 0 && e.IndexOf(",") < e.Length 
               ? e.Substring(e.LastIndexOf(",") + 1) 
               : e).ToArray();
fileDataField=fileRow.Split(“;”)
.选择(e=>e.LastIndexOf(“,”)>=0&&e.IndexOf(“,”)
您可以使用Linq来解决此问题。只需添加对
System.Linq
的引用,并设置
fileDataField
,如下所示:

fileDataField = fileRow.Split(';')
               .Select(e=> e.LastIndexOf(",") >= 0 && e.IndexOf(",") < e.Length 
               ? e.Substring(e.LastIndexOf(",") + 1) 
               : e).ToArray();
fileDataField=fileRow.Split(“;”)
.选择(e=>e.LastIndexOf(“,”)>=0&&e.IndexOf(“,”)
谢谢你的回答,但我不明白我在测试这段代码时是什么意思,它将:System.Collections.Generic.List`1[System.String]添加到我的datagridview中,你知道为什么吗?我已经更新了答案。问题是向GridView添加一个列表,现在它使用的是一个数组谢谢你的回答,但是我不明白我在测试这段代码的时候,它向我的datagridview添加了:System.Collections.Generic.List`1[System.String],你知道为什么吗?我已经更新了答案。问题是将列表添加到GridView,现在使用一个数组它工作得很好,但是我正在使用一个数组来修复这个问题,我添加了add.ToArray()谢谢你的帮助!事实上我意识到了这一点,并更新了我的答案:)工作得很好,但我正在使用一个数组来修复我添加的这个问题。ToArray()谢谢你的帮助!事实上我意识到了这一点,并更新了我的答案:)
System.IO.StreamReader fileReader = new System.IO.StreamReader(csvPath, false);
string[] fileDataField;
string fileRow;

//Reading Data
while (fileReader.Peek() != -1) {
    fileRow = fileReader.ReadLine();
    fileDataField = fileRow.Split(';');

    //Declare temporary array to temporary store the values
    string[] tempItems = new string[fileDataField.Length];
    //Loop through the array and do comma check,
    //Cut the string if there's a comma in it
    //Else just add the normal value

    for (int i = 0; i < fileDataField.Length; i++) {
        tempItems[i] = fileDataField[i].Substring(fileDataField[i].LastIndexOf(",") + 1);
    }
    dataGridView1.Rows.Add(tempItems);
}
fileReader.Dispose();
fileReader.Close();
fileDataField = fileRow.Split(';')
               .Select(e=> e.LastIndexOf(",") >= 0 && e.IndexOf(",") < e.Length 
               ? e.Substring(e.LastIndexOf(",") + 1) 
               : e).ToArray();