Check if String / Record exists in DataTable

前端 未结 4 639
既然无缘
既然无缘 2020-12-30 08:59

I have a String and I need to check if any column \"item_manuf_id\" in DataTable dtPs.Rows equals to certain value

I can loop over all Rows and compare



        
相关标签:
4条回答
  • 2020-12-30 09:45

    Use the Find method if item_manuf_id is a primary key:

    var result = dtPs.Rows.Find("some value");
    

    If you only want to know if the value is in there then use the Contains method.

    if (dtPs.Rows.Contains("some value"))
    {
      ...
    }
    

    Primary key restriction applies to Contains aswell.

    0 讨论(0)
  • 2020-12-30 09:46

    You can loop over each row of the DataTable and check the value.

    I'm a big fan of using a foreach loop when using IEnumerables. Makes it very simple and clean to look at or process each row

    DataTable dtPs = // ... initialize your DataTable
    foreach (DataRow dr in dtPs.Rows)
    {
        if (dr["item_manuf_id"].ToString() == "some value")
        {
            // do your deed
        }
    }
    

    Alternatively you can use a PrimaryKey for your DataTable. This helps in various ways, but you often need to define one before you can use it.

    An example of using one if at http://msdn.microsoft.com/en-us/library/z24kefs8(v=vs.80).aspx

    DataTable workTable = new DataTable("Customers");
    
    // set constraints on the primary key
    DataColumn workCol = workTable.Columns.Add("CustID", typeof(Int32));
    workCol.AllowDBNull = false;
    workCol.Unique = true;
    
    workTable.Columns.Add("CustLName", typeof(String));
    workTable.Columns.Add("CustFName", typeof(String));
    workTable.Columns.Add("Purchases", typeof(Double));
    
    // set primary key
    workTable.PrimaryKey = new DataColumn[] { workTable.Columns["CustID"] };
    

    Once you have a primary key defined and data populated, you can use the Find(...) method to get the rows that match your primary key.

    Take a look at http://msdn.microsoft.com/en-us/library/y06xa2h1(v=vs.80).aspx

    DataRow drFound = dtPs.Rows.Find("some value");
    if (drFound["item_manuf_id"].ToString() == "some value")
    {
        // do your deed
    }
    

    Finally, you can use the Select() method to find data within a DataTable also found at at http://msdn.microsoft.com/en-us/library/y06xa2h1(v=vs.80).aspx.

    String sExpression = "item_manuf_id == 'some value'";
    DataRow[] drFound;
    drFound = dtPs.Select(sExpression);
    
    foreach (DataRow dr in drFound)
    {
        // do you deed. Each record here was already found to match your criteria
    }
    
    0 讨论(0)
  • 2020-12-30 09:55

    Something like this

     string find = "item_manuf_id = 'some value'";
     DataRow[] foundRows = table.Select(find);
    
    0 讨论(0)
  • 2020-12-30 09:58

    I think that if your "item_manuf_id" is the primary key of the DataTable you could use the Find method ...

    string s = "stringValue";
    DataRow foundRow = dtPs.Rows.Find(s);
    if(foundRow != null) {
     //You have it ...
     }
    
    0 讨论(0)
提交回复
热议问题