字符串数组与 c# 中的数据集值进行比较
本文关键字:比较 数据集 数组 字符串 | 更新日期: 2023-09-27 18:35:08
我有以下代码:
DataSet ds = new DataSet();
ds = cls.ReturnDataSet("RetriveData",
new SqlParameter("@Field", "mark1"),
new SqlParameter("@TblNm", "stud"),
new SqlParameter("@WhereClause", "where id=124"));
有了这个,我得到以下值:
Id mark1
124 21
124 31
124 41
124 23
124 35
124 56
124 67
124 54
124 45
124 63
现在从下面我得到学生的分数:
DataSet dsmark = new DataSet();
dsmark = cls.ReturnDataSet("RetriveData",
new SqlParameter("@Field", "marks"),
new SqlParameter("@TblNm", "student"),
new SqlParameter("@WhereClause", "where id=124"));
从上面的查询中,我得到了以下输出:
Id marks
124 63
以下代码进行比较:
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["mark1"].ToString() != dsmark .Tables[0].Rows[0]["marks"].ToString())
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "Message", "alert('err')", true);
}
else
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "Message", "alert('No err')", true);
}
}
但是当我这样做时,它会比较值,但是当每次如果条件调用并且它不满足时,它会给我消息"err"。
但是数据库中的"63"值。
so i want like it will check with the all values and then if that values is not match then and then only give me message "err".
您的结果存储在 DataSet
内的数据表中。因此,您可以迭代第一个设置为
foreach(DataRow dro in ds.Tables[0].Rows)
{
// your comparison logic here
}
并将该表的列 mark1
的值与dsMark.Tables[0].Rows[0]["marks"]
进行比较(或您需要的任何其他比较)
更新
基于更新的问题 - 您的比较逻辑不正确。为了实现您的目标,它应该是这样的:
bool matchFound = false;
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["mark1"].ToString() == dsmark .Tables[0].Rows[0]["marks"].ToString())
matchFound = true;
}
if (matchFound)
Page.ClientScript.RegisterStartupScript(this.GetType(), "Message", "alert('No err')", true);
else
Page.ClientScript.RegisterStartupScript(this.GetType(), "Message", "alert('err')", true);
示例代码,
foreach(DataRow row in ds.Tables[0].Rows)
{
//your code to compare.
}