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