如何显示foreach循环中的所有结果

本文关键字:结果 循环 foreach 何显示 显示 | 更新日期: 2023-09-27 18:04:34

这是我的代码

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或一些地方(在每个循环其获得不同的结果)。我怎样才能做到这一点呢?

如何显示foreach循环中的所有结果

如果你只想在gridView c# winform中显示它,只需:

gridView1.DataSource = dt;

一个非常粗糙的架构。

编辑1:

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

首先,如果您在for中执行SELECT语句,性能将变得非常糟糕。每次SELECT命中时,它都会打开关闭连接。其次,从mssql的角度来看,像'%word%'这样的地方会给你带来麻烦,因为它不能被索引。此外,如果您能够获得正确的数据,以便可以构建where skill in('skill1', 'skill2', '..', '..'),那么将会更好,从而提高性能并减少DataTable中for的需求。

如果您仍然需要使用%word%,那么考虑使用临时表,并在sql中执行查询。通常,它应该比- 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:-

GridView1.DataSource = dt;
GridView1.DataBind();