Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Join Linq查询合并数组中的两个字符串,并输出为单个逗号分隔的字符串_C#_String_Linq - Fatal编程技术网

C# Join Linq查询合并数组中的两个字符串,并输出为单个逗号分隔的字符串

C# Join Linq查询合并数组中的两个字符串,并输出为单个逗号分隔的字符串,c#,string,linq,C#,String,Linq,作为数据清理练习的一部分,我需要更正csv文件的格式 由于格式不好/缺少引号,说明字段中的一个额外逗号正在破坏我的DTS包 因此,为了解决这个问题,我创建了一个简单的C#脚本来查找csv中包含比标题行更多列的任何行 当行包含的列数超过标题时,我希望将数组项[10]和[11]合并为一列,然后将该行写入我的新文件-保持所有其他现有列不变 代码: 不幸的是,我的Linq写作技能有些欠缺,请有人帮我填写TODO。只需使用列列表而不是数组。这将允许您在合并后删除不必要的列: var columns = s

作为数据清理练习的一部分,我需要更正csv文件的格式

由于格式不好/缺少引号,说明字段中的一个额外逗号正在破坏我的DTS包

因此,为了解决这个问题,我创建了一个简单的C#脚本来查找csv中包含比标题行更多列的任何行

当行包含的列数超过标题时,我希望将数组项[10]和[11]合并为一列,然后将该行写入我的新文件-保持所有其他现有列不变

代码:


不幸的是,我的Linq写作技能有些欠缺,请有人帮我填写TODO。

只需使用列列表而不是数组。这将允许您在合并后删除不必要的列:

var columns = splitExpression.Split(line).Where(s => s != delimiter).ToList();

if (headers == null) headers = new string[columns.Count];

if (columns.Count != headers.Length)
{
    columns[10] = columns[10] + columns[11]; // combine columns here
    columns.RemoveAt(11);       
}

writer.WriteLine(string.Join(delimiter, columns));

很好用谢谢你,谢尔盖。。。老实说,我有点不好意思,我一开始没看到
var columns = splitExpression.Split(line).Where(s => s != delimiter).ToList();

if (headers == null) headers = new string[columns.Count];

if (columns.Count != headers.Length)
{
    columns[10] = columns[10] + columns[11]; // combine columns here
    columns.RemoveAt(11);       
}

writer.WriteLine(string.Join(delimiter, columns));