我正在尝试计算ID为3的DataList中的行,并将值放在标签中。
for (int i = 0; i < Product.Items.Count; ++i)
{
if (table.Rows[i]["id"].ToString() == "3")
{
int x = x + 1;
lblCounter.text = x.ToString
}
}
答案 0 :(得分:14)
lblCounter.Text = table.Rows.OfType<DataRow>().Count(row => row["id"] == 3).ToString();
根据KooKiz的评论编辑,假设表格为DataTable
。
答案 1 :(得分:5)
将x
的声明移至外部范围。
int x=0;
for (int i = 0; i < Product.Items.Count; ++i)
if (table.Rows[i]["id"].ToString() == "3")
{
x = x + 1;
lblCounter.text = x.ToString
}
改进的一个:
int x = 0;
for (int i = 0; i < Product.Items.Count; ++i)
if (table.Rows[i]["id"].ToString() == "3")
x = x + 1;
lblCounter.text = x.ToString
答案 2 :(得分:5)
int x = x + 1;
不行。你必须做类似
的事情int x = 0;
在循环之前和
x = x + 1;
在里面。另外,您可能希望在循环之后放置lblCounter.text = x.ToString,以便tu只更新一次。
这使得
int x = 0;
for (int i = 0; i < Product.Items.Count; ++i)
if (table.Rows[i]["id"].ToString() == "3")
x = x + 1;
lblCounter.text = x.ToString();
答案 3 :(得分:4)
int x = 0;
for (int i = 0; i < Product.Items.Count; ++i)
{
if (table.Rows[i]["id"].ToString() == "3")
{
x++;
}
}
lblCounter.Text = x.ToString();
答案 4 :(得分:3)
您在该代码中遇到了几个问题。
你不能增加x变量的原因。是你在循环中声明它吗?因此,它为每次循环运行“重新创建”。
下一个问题可能是你正在使用preincrementation instead of post increment,最后一件事是将常量与变量进行比较通常会更好。这可以保护您免受不必要的NullPointerException。
因此改进后的代码应如下所示:
int x = 0; //Declaration of x
for(int i=0; i< Product.Items.Count; i++) { //Post increment
if("3".Equals(table.Rows[i]["id"]) { // Check constant against variable.
x++; // Post increment x = x + 1;
}
}
lblCounte.Text = Convert.ToString(x); //Assign the int result to String member.
如果有任何其他问题,请不要犹豫,写下来。
和平。
答案 5 :(得分:1)
您需要在循环外初始化x
,然后调用.ToString()
以查找字符串值。 (这是一种方法,而不是属性,所以它需要最终的()
。
试试这个:
int x = 0;
for (int i = 0; i < Product.Items.Count; ++i)
if (table.Rows[i]["id"].ToString() == "3")
{
x = x + 1;
lblCounter.text = x.ToString();
}
}
您也可以使用x++
一步增加,但我个人更喜欢明确增加。
答案 6 :(得分:0)
如果我理解你的问题。
int x = 0;
for (int i = 0; i < Product.Items.Count; ++i)
if (table.Rows[i]["id"].ToString() == "3")
{
x = x + 1;
lblCounter.text = x.ToString()
}