如何使用C#包含

时间:2015-07-27 09:13:29

标签: c# datatable contains

我有一个带有多列主键的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
{
}

提前谢谢

2 个答案:

答案 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。