Linq Split函数查询

本文关键字:查询 函数 Split Linq | 更新日期: 2023-09-27 18:11:05

我有一个csv文件,其中包含以下记录:

Col1、Col2 Col3

"测试,Test1",1、3

下面我有Linq查询,它将csv拆分为XML文档。然而,对于上面给出的例子,它将"Test,Test1"拆分为两个单独的元素。

var xml = new XElement("Root", source.Select(x => 
    new XElement("Testing", x.Split(splitChar).Select((Field, index) => 
        new XElement("Field" + index, Field)))).Skip(1));

生成如下:

<Root>
<Testing Field0="Test" Field01="Test1" Field02="1" Field03="3" />
</Root>

但是我想要的是:

<Root>
<Testing Field0="Test,Test1" Field01="1" Field02="3" />
</Root>

谁能帮我实现以上目标?

Linq Split函数查询

而不是:

x.Split(splitChar)

尝试使用正则表达式:

Regex.Matches(x, "'"[^'"]*'"|[^,]+").Cast<Match>().Select(m => m.Value)

匹配带引号的字段,例如:"foobar,baz" 不包含逗号的字段。

我的回答有一些限制:

  • 处理字符串中的转义引号,例如在本例中:"Test1,Test'"two'",Test3",0,1。你需要这个吗?
  • 分隔符不再是参数,而是硬编码。您必须小心,因为有些字符是特殊的,需要在正则表达式中进行转义。如果您希望基于splitChar的运行时值构建正则表达式,请考虑使用Regex.Escape