如何使用C#
我有一个主键为多列的DataTable如何使用C#,c#,datatable,contains,C#,Datatable,Contains,我有一个主键为多列的DataTable dt.PrimaryKey = new DataColumn[] {dt.Columns["Name"], dt.Columns["Type"] }; 现在我想检查我的数据表dt是否包含(Adarsh,开发者) 我必须在Contains方法中传递两个值 我试着使用下面的方法,但似乎不起作用 DataRow dr = dt.Rows(e.RowIndex); DataRow drNew = dt.NewRow(); drNew["Name"] = dr[
dt.PrimaryKey = new DataColumn[] {dt.Columns["Name"], dt.Columns["Type"] };
现在我想检查我的数据表dt是否包含(Adarsh,开发者)
我必须在Contains方法中传递两个值
我试着使用下面的方法,但似乎不起作用
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。要使用的重载只有一个参数:Object[]keys
,但您试图传递两个参数
您必须将密钥打包到对象[]
:
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)
Linq是一个有效的答案,它可能更像是
table.Rows.Any(…)
dt.Rows.Contains(first_value, second_value)