如何使用C#

如何使用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[

我有一个主键为多列的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["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)