首页 文章

数据表/数据行如果存在更新其他插入

提问于
浏览
3

试图找到答案已经证明是困难的,因为所有的答案都与SQL有关!

我有一个Datatable TestTable . 在这个DataTable中,我有三列, IDValueXValueY . 当我向这个数据表添加新记录时,我试图创建一个插入方法,查看该记录是否存在,但无法使用Select语句来使用多个字段 . 在我的情况下,我需要查看数据表是否包含等于ID和ValueX的记录,如果是,则更新 . 否则,将新记录添加到数据表 .

public void Insert(string ID, string ValueX, string ValueY)
{
DataRow dr = TestTable.NewRow();
dr["ID"] = ID;
dr["ValueX"] = ValueX
dr["ValueY"] = ValueY;
TestTable.Rows.Add(dr);
}

1 回答

  • 3

    你可以使用Find method

    DataRowCollection.Find Method(Object [])获取包含指定主键值的行 .

    寻找具体的 DataRow . 请注意, DataTable 必须具有适当的主键 .

    Example:

    // create Table with ID, ValueX, ValueY
    var table1 = new DataTable();
    var id = table1.Columns.Add("ID");
    var x = table1.Columns.Add("ValueX");
    var y = table1.Columns.Add("ValueY");
    
    // set primary key constain so we can search for specific rows
    table1.PrimaryKey = new[] {id, x};
    
    // some sample data
    table1.Rows.Add(new Object[] {1, 1, 100});
    table1.Rows.Add(new Object[] {2, 2, 200});
    
    // find the row with key {1, 1} and update it, if it exists
    // else you would want to create a new row
    var exisiting = table1.Rows.Find(new Object[] {1, 1});
    if (exisiting != null)
        exisiting.ItemArray = new object[] {1, 1, 9999};
    

相关问题