11

我有一个字符串,我需要检查 DataTable dtPs.Rows 中的任何列“item_manuf_id”是否等于某个值

我可以遍历所有行并进行比较

String id = dtPs.Rows[number]["item_manuf_id"].ToString()
if ("some value".equals(id)) etc.

但我想知道是否有任何方法可以检查是否DataTable包含记录

4

4 回答 4

19

像这样的东西

 string find = "item_manuf_id = 'some value'";
 DataRow[] foundRows = table.Select(find);
于 2012-08-14T21:37:21.887 回答
5

如果是主键,则使用Find方法:item_manuf_id

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

如果您只想知道该值是否在其中,请使用Contains方法。

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

主键限制也适用Contains

于 2012-08-14T21:37:56.590 回答
4

您可以遍历每一行DataTable并检查值。

我非常喜欢在使用 s 时使用foreach循环IEnumerable。使查看或处理每一行变得非常简单和干净

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

或者,您可以将 aPrimaryKey用于您的DataTable. 这有多种帮助,但您通常需要先定义一个,然后才能使用它。

在http://msdn.microsoft.com/en-us/library/z24kefs8(v=vs.80).aspx上使用 if 的示例

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"] };

一旦定义了主键并填充了数据,就可以使用Find(...)方法获取与主键匹配的行。

看看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
}

最后,您可以使用Select()方法DataTablehttp://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
}
于 2012-08-14T21:54:27.400 回答
2

我认为如果您的“item_manuf_id”是 DataTable 的主键,您可以使用Find方法...

string s = "stringValue";
DataRow foundRow = dtPs.Rows.Find(s);
if(foundRow != null) {
 //You have it ...
 }
于 2012-08-14T21:36:51.587 回答