C#如何使一个foreach循环不重写字符串变量

问题描述:

我想通过一个PHP项目到ASP.NET,我正在做一些测试。回到怀疑,我有这样的代码来完成:C#如何使一个foreach循环不重写字符串变量

using System; 
using System.Configuration; 
using System.Data; 
using MySql.Data.MySqlClient; 

namespace project_t 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     public string level_text; 

     public void Page_Load(object sender, EventArgs e) => people_box_repeater_method(); 

     public void people_box_repeater_method() 
     { 
      using (MySqlConnection mysql_connection = new MySqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString)) 
      { 
       MySqlDataAdapter mysql_data_adapter = new MySqlDataAdapter("SELECT * FROM employees", mysql_connection); 
       DataTable data_table = new DataTable(); 
       mysql_data_adapter.Fill(data_table); 

       DataView data_view = new DataView(data_table); 
       data_view.Sort = "name"; 
       data_view.Sort = "function"; 
       data_view.Sort = "sector"; 
       data_view.Sort = "location"; 
       data_view.Sort = "mail"; 
       data_view.Sort = "phone"; 
       data_view.Sort = "photo"; 
       people_box_repeater.DataSource = data_view; 
       people_box_repeater.DataBind(); 

       string vartest = "4"; 
       foreach (DataRow data_row in data_table.Rows) { 
        if ((string)data_row["level"] == vartest) { level_text = (string)data_row["level"]; System.Diagnostics.Debug.WriteLine(data_row["level"]); } 
       } 
      } 
     } 
    } 
} 

我的问题是这部分:

string vartest = "4"; 
foreach (DataRow data_row in data_table.Rows) { 
    if ((string)data_row["level"] == vartest) { level_text = (string)data_row["level"]; System.Diagnostics.Debug.WriteLine(data_row["level"]); } 
} 

我把两个数据输出,一个在.aspx页面,我的HTML代码<% = level_text%>和另一个在输出控制台上。

在我的数据库中,我有四行“level”列中的值为“4”。 At the console output, it returns me four rows corresponding to the database.

Now in the .aspx page the number "4" appears once.我希望出现四次数字“4”就像在控制台输出。我究竟做错了什么?

+0

你想用7个连续的调用来排序相同的DataView? – Steve

+0

在*创建'DataView'并将'DataView'指定为'DataSource'之前执行'DataTable'操纵*。换句话说,在'mysql_data_adapter.Fill(data_table);' – Nino

+0

之后移动你的3个“有问题”的行,它是正确的。你正在用值“4”替换变量的值,所以最后你在那个变量中有“4”。如果要连接使用label_text + = value的输出。 – Steve

每次你的if语句是真的,你都这样做。 level_text =(string)data_row [“level”]; 这意味着它每次都设置为相同的值。 如果使用+ =而不是=,它会添加一些东西到字符串中。

例如,你的代码现在正在做level_text = 4;每次用+ =你会得到level_text = 4444

+0

它工作完美,谢谢! –