将数据行值与字符串进行比较if
我有一个应用程序,它将用户选择的值存储到我的数据集填充的数据表中的值。根据这个比较,我需要在表格中设置另一列。但是比较不起作用。它总是返回false,而不是输入if条件。将数据行值与字符串进行比较if
foreach (DataRow dr in dsQuestions.Tables[0].Rows)
{
if (dr["Data"] == indicater[0])
{
dr["IsSelected"] = true;
}
}
indiactor[0]
是一个字符串数组和dr["data"]
是字符串类型也但它表明它需要一个字符串类型的警告。
首先字符串使用==你应该使用无法比拟的equals方法:
foreach (DataRow dr in dsQuestions.Tables[0].Rows)
{
if (dr["Data"].tostring().Equals(indicater[0]))
{
dr["IsSelected"] = true;
}
试试这个:
foreach (DataRow dr in dsQuestions.Tables[0].Rows)
{
if (dr["Data"].tostring() == indicater[0].tostring())
{
Convert.toBoolean(dr["IsSelected"].tostring()) = true;
}
我敢肯定,它不会编译,因为你不能分配一个值布尔 – Sayse 2014-09-03 07:23:02
的DataRow
索引该索引处返回字段为object
不是string
。
我会建议使用强类型Field
-extension方法,它也支持nullables:
if (dr.Field<String>("Data") == indicater[0]){}
...和SetField
方法也支持可空类型:
dr.SetField("IsSelected", true);
更新如果indicater[0]
确实是string[]
(而不是单个string
),那么如何比较字符串与字符串[]?比如你要检查,如果数组包含此数据:
if (indicater[0].Contains(dr.Field<String>("Data"))){}
这也可以解释为什么它从来没有进入if
:因为==
只能通过平等比较字符串,其他类型的不具有覆盖了==
- 操作员将只比较参考。 A string
与string[]
决不相同。但是,您不会收到编译时错误,因为您可以将object
与其他所有内容进行比较。
可能对
DataRow[] result = table.Select("Id = 1");
foreach (DataRow row in result)
{
if (row[0].Equals(indicater[0]))
{
//IsSelected
row[1]=true;
Console.WriteLine("{0}", row[0]);
}
}
你AFAIR你不能用'字符串比较有用的=='你需要使用'equals' – 2014-09-03 07:18:07
'indicator [0]'是一个字符串数组,而'dr [data]'是一个字符串?你确定这是正确的吗? – Sayse 2014-09-03 07:18:49