C# 如何显示进入foreach循环的所有结果

C# 如何显示进入foreach循环的所有结果,c#,C#,这是我的密码 foreach (string word in words) { SqlCommand cmd= new SqlCommand("select * from skills where (skills like '%"+word+"%')",con); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTab

这是我的密码

foreach (string word in words)
            {
                SqlCommand cmd= new SqlCommand("select * from skills  where (skills  like '%"+word+"%')",con);
                SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable();
                da.Fill(dt);

            }

最后,我想将所有结果显示在gridview中,或者在每个循环中显示不同的结果。如何实现这一点?

如果您只想在gridView C winform中显示它,只需执行以下操作:

gridView1.DataSource = dt;
一个非常粗糙的架构

编辑1:

好吧,我误解了要求。扫描读取不够好。Pranav的答案已经是一个有效的解决方案,我将为它添加一些额外的注释

首先,如果在for中执行SELECT语句,性能将非常差。它将在每次点击SELECT时打开close connection。其次,从mssql的角度来看,像“%word%”这样的词会给您带来麻烦,因为它无法被索引。此外,如果您能够获得正确的数据,以便能够在'skill1'、'skill2'、'..'和'..'中构建where技能,则会更好,从而提高性能并减少对数据表中数据的需求


如果您仍然需要使用%WOR%,那么考虑使用TEMP表,而不是在SQL中进行查询。通常,它的执行速度应该比for-SELECT快。

您可以尝试以下方法:

 DataTable dt = new DataTable();
foreach (string word in words)
            {
                SqlCommand cmd= new SqlCommand("select * from skills  where (skills  like '%"+word+"%')",con);
                SqlDataAdapter da = new SqlDataAdapter(cmd); 
                DataTable dt1 = new DataTable();
                da.Fill(dt1);
                if (dt!= null)// to check if datatable is empty:-
                dt.Merge(dt1, false, MissingSchemaAction.Add);
                else
                dt=dt1.copy();// copy one datatable to another
                dt1.clear();
            }
//最后,使用gridview绑定datatable:-

GridView1.DataSource = dt;

GridView1.DataBind();

每次循环迭代都会创建一个新的数据表,因此会丢失以前的内容。除此之外,您不会说您在使用此代码时遇到了什么错误,或者您已经尝试过如何显示它。这会有帮助。我还将在此处声明强制性的“您应该使用SQL参数来避免SQL注入攻击”。您可以使用数据表合并。查看此链接:-丢失以前的内容..这正是问题所在..我想显示所有结果…需要您的评论请查看更新的答案。。希望它会有帮助,但是先生,它只会显示我们在循环中得到的最后结果。我正在尝试写所有的结果。好的,我误读了要求。用普拉纳夫的答案代替。很好。如何在网格视图中显示?'System.Data.DataTable'不包含“copy”的定义@user2068501 Pranav所说的copy只是一个伪代码,如果我正在搜索关键字“java”,它会显示那些具有java技能的人。如果我的下一个关键字是“a”,它也会返回与前一个相同的结果,因此会返回多个相同的结果得到…希望你得到了我的绊脚石…给我你的宝贵意见,并建议我一些解决方案,如果你有什么比这个