linq中的IndexOf尝试剪切文件时出现的问题

时间:2020-05-08 21:34:12

标签: c# linq indexof

在Linq中使用IndexOf时出现问题,我的大脑几天崩溃了。 问题: 我在文件中有一个SQL查询,例如

create table a (col1 nvarchar(max),col2 nvarchar(max), col3 nvarchar(max))

insert into a (col1, col2 ,col 3) values
('text 1','text 2','text 3');

insert into a (col1, col2 ,col 3) values
('text 1','text 2','text 3');

.... (and maybe 0 -> 2000 times "insert into" like that)

现在我想制作一些文件,也许有500个查询“插入”到文件中,然后运行dapper插入数据库。这是我的代码:

        var insert_query = line_result.Where(r => r.TrimStart().StartsWith("INSERT INTO")).ToList();
            for (int j = 0; j < insert_query.Count(); j += 500)
            {
                var start_line_insert = 0;
                var end_line_insert = 0;
                if (insert_query.Count() < 500)
                {
                    start_line_insert = line_result.IndexOf(insert_query[j]);
                    end_line_insert = line_result.Count() - 1;
                }
                if (insert_query.Count() - j > 500)
                {
                    start_line_insert = line_result.IndexOf(insert_query[j]);

                    end_line_insert = line_result.IndexOf(insert_query[j + 500]) - 1;


                }
                if (insert_query.Count() - j < 500 && insert_query.Count() - j > 0)
                {
                    start_line_insert = line_result.IndexOf(insert_query[j]);
                    end_line_insert = line_result.Count() - 1;

                }
                var insert_result = line_result.Skip(start_line_insert).Take(end_line_insert - start_line_insert);

                var name = "insert_script_for_part_" + i + "_number_" + j +".sql";
                File.WriteAllLines(Path.Combine(new_file_full, name), insert_result);
                Console.WriteLine("Run Script Successful!");
            }


with variable line_result is all line in file.

并生成图片:new_member_and_cannot_to_show_picture_:<

当我运行调试时,如果line_result有1700行(示例)insert into行,则此代码

        if (insert_query.Count() - j > 500)
            {
                start_line_insert = line_result.IndexOf(insert_query[j]);

                end_line_insert = line_result.IndexOf(insert_query[j + 500]) - 1;


            }

总是返回end_line_insert = start_line_insert - 1,但是我试图跳500步。

我认为是因为相同的字符串insert into a...和IndexOf理解第一行与之匹配。 我该如何解决?非常感谢!对不起,我的英语不好,而且问题很长。

0 个答案:

没有答案
相关问题