将长CSV字符串拆分为多个字符串变量

时间:2013-09-15 04:36:30

标签: c# linq csv

我有一个长CSV字符串,最大长度为44,119个字符。我有一个SQL存储过程,接受1到6个参数,每个参数varchar(8000)用于将长CSV分成多个参数并将其传递给存储过程。

我的存储过程运行正常,但是如何将长CSV分成不同的字符串变量,使它们不超过8000个字符的字符串长度?

例如:

string myLongCSV = "1,2,345,5674,234,22,34..." //a long CSV

我无法使用SubString (0, 8000),因为第8,000个字符可能会破坏长CSV中的数字,而不是逗号。

我想在C#中编写代码,使其将长CSV中的所有数字划分为不同的字符串变量,使每个变量的长度不超过8000个字符。

2 个答案:

答案 0 :(得分:1)

如果可以,修改SQL存储过程以使用数据类型VACHAR(MAX)的单个参数,因为它最多可存储2,147,483,647个字符。

如果不能,请使用String.Split功能,如下所示:

string[] words = myLongCSV.Split(',');
foreach (string word in words)
{
    // some logic here to construct your parameters and check their length.
}

答案 1 :(得分:0)

试试这个。

想法是获得第8,000个字符,如果它是一个数字,然后减少索引,直到它为','然后你可以Substring(),如下所示:

string s = "123,45636...";      
int index = 7;

while (true)
{
    if (s[index] == ',')
    {
        s = s.Substring(0, index);
        break;
    }
    else
    {
        index--;
    }
}