我的应用程序在datagridview中搜索特定字符串的所有单元格,并将相邻单元格中的相应值与十进制变量相加。在下面的代码中,当我用Anotherstring条件取出嵌套if时,我的代码运行完美。当我将其插入到我的代码中时,嵌套的if条件不会运行。我做错了什么?
decimal amount = 0;
decimal sum = 0;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
for (int index = 0; index < dataGridView1.ColumnCount - 1; index++)
{
DataGridViewCell cell = row.Cells[index];
if (cell.Value == DBNull.Value || cell.Value == null)
continue;
if (cell.Value.ToString().Contains("String"))
{
if (cell.Value.ToString().Contains("Anotherstring"))
{
DataGridViewCell next = row.Cells[index + 1];
string s4 = next.Value.ToString();
amount += Decimal.Parse(s4, NumberStyles.Currency, custom);
textBox50.Text = amount.ToString();
}
DataGridViewCell nexter = row.Cells[index + 1];
string s5 = nexter.Value.ToString();
sum += Decimal.Parse(s5, NumberStyles.Currency, custom);
textBox41.Text = sum.ToString();
}
答案 0 :(得分:1)
您可能会进入内部if语句,但Contains区分大小写。因此,您要么使用ToLower,要么在关注案例时使用支票中的正确案例。
if (cell.Value.ToString().ToLower().Contains("string"))
{
if (cell.Value.ToString().ToLower().Contains("anotherstring"))
{
DataGridViewCell next = row.Cells[index + 1];
string s4 = next.Value.ToString();
amount += Decimal.Parse(s4, NumberStyles.Currency, custom);
textBox50.Text = amount.ToString();
}
DataGridViewCell nexter = row.Cells[index + 1];
string s5 = nexter.Value.ToString();
sum += Decimal.Parse(s5, NumberStyles.Currency, custom);
textBox41.Text = sum.ToString();
}
答案 1 :(得分:0)
Contains方法区分大小写。在你的例子中,&#34; Anotherstring&#34;不包含&#34; String&#34;,因此嵌套的if语句不匹配。
如果您需要不区分大小写的匹配,请考虑使用IndexOf()。