在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理解第一行与之匹配。
我该如何解决?非常感谢!对不起,我的英语不好,而且问题很长。