我有一个带有多列主键的DataTable
dt.PrimaryKey = new DataColumn[] {dt.Columns["Name"], dt.Columns["Type"] };
现在我想检查我的DataTable dt是否包含(Adarsh,Developer)
我必须在Contains Method
中传递两个值我尝试使用以下似乎不起作用的
DataRow dr = dt.Rows(e.RowIndex);
DataRow drNew = dt.NewRow();
drNew["Name"] = dr["Name"];
drNew["Type"] = dr["Type"];
drNew["Address"] = dr["Address"];
if(dt.Rows.Contains(drNew["Name"].ToString(), drNew["Type"].ToString())) //This gives me an error
{
}
提前谢谢
答案 0 :(得分:7)
您要使用的DataRowCollection.Contains
重载只有一个参数:Object[] keys
,但您尝试传递两个参数。
您必须将密钥打包到Object[]
:
dt.Rows.Contains(new object[]{first_value, second_value})
如果你觉得它很难看,你可以用这样一个简单的扩展方法包装它:
public static class Extenstions
{
public static bool Contains(this DataRowCollection c, params object[] args)
{
return c.Contains(args);
}
}
可以让你按照自己的方式调用它,比如
dt.Rows.Contains(first_value, second_value)
答案 1 :(得分:1)
您可以尝试选择()。
DataRow[] result = table.Select("Name = 'foo' and Type = 'bar'");
然后查看结果计数是否大于0。