在下面的代码中我有一个datatable
我想从datatable
中选择一个值并检查值是否存在,但是它会抛出错误:
System.Data.DataTable.Select(string)
的最佳重载方法匹配有一些无效的参数“,”无法从bool
转换为string
请帮我解决这个问题。
Student Details = new Student ();
DataSet ds = Details.Marks();
DataTable dt = ds.Tables[0];
if (dt.Select("RollNo =" != txtRgNo.Text.ToString()) ||
dt.Select("Name=" != txtName.Text.ToString()))
{
}
else
{
}
答案 0 :(得分:1)
Student Details = new Student ();
DataSet ds = Details.Marks();
DataTable dt = ds.Tables[0];
DataRow dr1=dt.Select("RollNo!= " + txtRgNo.Text.ToString());
DataRow dr2=dt.Select("Name !="+ txtName.Text.ToString())
if (dr1.Length>0 ||dr2.Length>0 )
{
}
else
{
}
答案 1 :(得分:0)
DataTable的“Select()”方法使用过滤器表达式。作为示例,您可以使用以下内容查询特定的RollNo,并返回DataRow数组。如果DataRow返回多个元素,则它存在。否则,它就不存在了。
int rollNumber = 1;
string filterExpression = string.Format("RollNo = {0}", rollNumber);
DataRow[] rows = dt.Select(filterExpression);
if (rows != null && rows.Length > 0)
{
//Exists
}
else
{
//Does not exists
}
您的案例中的完整过滤器表达式如下:
string filterExpression = string.Format("RollNo <> {0} AND Name <> '{1}'", txtRgNo.Text.ToString(), txtName.Text.ToString());
使用DataTable.Select()的其他参考: https://msdn.microsoft.com/en-us/library/det4aw50(v=vs.110).aspx
答案 2 :(得分:0)
!=应该是您要发送到DataTable.Select的字符串过滤器的一部分,但它也不是正确的运算符。请参阅this link。
您的代码应与此类似:
dt.Select("RollNo <> " & txtRgNo.Text.ToString())
答案 3 :(得分:0)
您可以使用Linq Queries选择并过滤以下任何字段:
Student Details = new Student();
DataSet ds = Details.Marks();
DataTable dt = ds.Tables[0];
if (dt.Rows.Count > 0)
{
var result = from d in dt.AsEnumerable()
where d["RollNo"].ToString() == txtRgNo.Text &&
d["Name"].ToString() == txtName.Text
select new
{
RollNo = d.Field<int>("RollNo"),
Name = d.Field<string>("Name")
};
if (result.Any())
{
// results is not empty ...
}
}