如何在c中的一个循环中运行两个foreach循环



我不知道如何描述我的问题,但我想要的结果是查看图像

我的代码:

using (SQLiteConnection con = new SQLiteConnection(AppSettings.ConnectionString()))
{
con.Open();
using (SQLiteDataAdapter sda = new SQLiteDataAdapter("Select * From Deals_FF Where Deal_Code = '" + Deal_Code + "'", con))
{
DataTable dt = new DataTable();
sda.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
int n = SalesRegisterControl.Instance.Sales_Grid.Rows.Add();
SalesRegisterControl.Instance.Sales_Grid.ClearSelection();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[1].Value = dr["Deal_Name"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[2].Value = dr["Deal_Price"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[3].Value = 1;
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[4].Value = dr["Deal_Price"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[5].Value = "FF";
break;
}
foreach (DataRow dr in dt.Rows)
{
int n1 = SalesRegisterControl.Instance.Sales_Grid.Rows.Add();
SalesRegisterControl.Instance.Sales_Grid.ClearSelection();
SalesRegisterControl.Instance.Sales_Grid.Rows[n1].Cells[1].Value = dr["Item_Name"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n1].Cells[2].Value = 0;
SalesRegisterControl.Instance.Sales_Grid.Rows[n1].Cells[3].Value = dr["Quantity"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n1].Cells[4].Value = 0;
SalesRegisterControl.Instance.Sales_Grid.Rows[n1].Cells[5].Value = "FF";
}
}
}

有更好的方法来解决这个问题吗?我添加了两个foreach循环来解决我的问题,但我所做的代码不好,我如何才能以更好的方式做到这一点,请指导?

您可以尝试使用一个bool来控制循环,然后组合两个foreach。当您第一次运行时,bool设置为false。

bool IsFirst = true;
foreach (DataRow dr in dt.Rows)
{
int n = SalesRegisterControl.Instance.Sales_Grid.Rows.Add();
if (IsFirst)
{
SalesRegisterControl.Instance.Sales_Grid.ClearSelection();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[1].Value = dr["Deal_Name"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[2].Value = dr["Deal_Price"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[3].Value = 1;
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[4].Value = dr["Deal_Price"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[5].Value = "FF";
IsFirst = false;
} else
{
SalesRegisterControl.Instance.Sales_Grid.ClearSelection();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[1].Value = dr["Item_Name"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[2].Value = 0;
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[3].Value = dr["Quantity"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[4].Value = 0;
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[5].Value = "FF";
}
}

编辑

或者你不需要第一个循环,只需要像这样赋值。

int n = SalesRegisterControl.Instance.Sales_Grid.Rows.Add();
SalesRegisterControl.Instance.Sales_Grid.ClearSelection();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[1].Value = dr["Deal_Name"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[2].Value = dr["Deal_Price"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[3].Value = 1;
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[4].Value = dr["Deal_Price"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[5].Value = "FF";
foreach (DataRow dr in dt.Rows)
{
n = SalesRegisterControl.Instance.Sales_Grid.Rows.Add();
SalesRegisterControl.Instance.Sales_Grid.ClearSelection();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[1].Value = dr["Item_Name"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[2].Value = 0;
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[3].Value = dr["Quantity"].ToString();
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[4].Value = 0;
SalesRegisterControl.Instance.Sales_Grid.Rows[n].Cells[5].Value = "FF";
}

最新更新