【问题标题】:check if a value exists in DataRow array检查 DataRow 数组中是否存在值
【发布时间】:2013-04-10 10:05:51
【问题描述】:

在我的应用程序中,我正在使用过滤器表达式过滤数据表,并获得与条件匹配的 DataRow。现在我想检查特定列的值是否存在于 DataRow 数组的任何行中。

代码

string FilterCond1 = "id=" + getId;
DataRow[] myrow = DataTable.Select(FilterCond1);
if (myrow.Length > 0)
{
//check for size=28 in DataRow[]
}
else
{
}

我在数据表DataTable 中有列size,我想检查DataRow 数组的任何行在size 列中是否有值28。我该怎么办?

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    试试这个

    string FilterCond1 = "id=" + getId;
    DataRow[] myrow = DataTable.Select(FilterCond1);
    if (myrow.Length > 0)
    {
      for(int i = 0; i < myrow.Length; i ++)
      {
        if(myrow[i]["size"].ToString() == "28")
        {
          // YOUR CODE HERE 
        }
      }
    }
    else
    {
    }
    

    编辑

    只需将条件添加到您的过滤器。

    string FilterCond1 = "id=" + getId + " AND size=28";
    

    那么您就不需要if(myrow[i]["size"].ToString() == "28"),因为您知道数组中的行是您想要的。

    【讨论】:

    • 如何在FilterCond1中传递一个字符串而不是28
    • 你是什么意思?您希望大小成为变量吗?
    【解决方案2】:

    首先,您应该使用 foreach 遍历所有行,然后使用下面的代码..

    if(myrow[row]["size"] == 28)
    

    int ColIndex = 3; // replace 3 with ur co. index 
    if(myrow[row][ColIndex] == 28)
    

    【讨论】:

      【解决方案3】:

      您可以使用列集合来访问行中的特定列值。

      if(myrow[rowIndex]["ColoumnName"].ToString() == "somevalue")
      

      行索引可以从零到长度为 1

      编辑基于cmets,可以在select的列上放多个条件,勾选here,可能不需要迭代。

      string FilterCond1 = "id=" + getId + " AND size = " + 28;
      DataRow[] myrow = dt.Select(FilterCond1);
      

      遍历行集合

      for(int i=0; i < myrow.Length; i++)
      {
         if(myrow[i]["size"].ToString() == "28")
         {
              //your code
         }
      }
      

      【讨论】:

      • 它给我一个错误不能将类型字符串隐式转换为int。
      • 您将字符串与 int 进行比较,将条件更改为 if(int.Parse(myrow["ColoumnName"].ToString()) == 123)
      • 对不起,我认为 myrow 是行对象,但它是行对象数组,您需要使用索引器,if(myrow[0]["ColoumnName"].ToString() == "somevalue") 也检查我更新的答案
      • 我知道我们应该使用行索引器。但我想检查所有行的值是否存在。
      猜你喜欢
      • 2010-11-01
      • 1970-01-01
      • 2015-02-08
      • 2012-06-29
      • 2016-06-22
      • 2020-08-03
      • 1970-01-01
      相关资源
      最近更新 更多