【问题标题】:Selecting a column from datatable to check its values从数据表中选择一列以检查其值
【发布时间】:2015-09-29 09:27:12
【问题描述】:

我有一个包含 3 列“名称”、“类型”、“ID”的数据表,我只想使用其中的一列进行比较。这是“类型”。我想将该列放在与数据表分开的 DataColumn 中,将其中单元格的值与字符串进行比较,然后在匹配时传递一个字符串。 我不确定这个方法是对还是错,我什至不知道如何获取这个Datacolumn中单元格(行)的字符串值进行比较

这是我的代码:

DataTable Griddetails;
Griddetails = RxMUaClient.BrowseGrid("2", "127.0.0.1:48030", nodepassed);

var myColumn = Griddetails.Columns.Cast<DataColumn>()
                          .SingleOrDefault(col => col.ColumnName == "Type");

return Json(myColumn);
if (myColumn != null)
{
    for (int i = 0; i <= myColumn.; i++ )
    {

    }
}

我正在尝试通过 for 循环或 foreach 获取 dataColumn 中的数据行计数,foreach 不适用于某些错误,并且我不知道如何获取 for 循环的 datacolumn 的值。

有什么帮助吗?

【问题讨论】:

  • 我不明白你的问题。 myColumn 是单个 DataColumn。一个列属于一个表。一个表可以有多个DataRows,每一行都有每一列的值。但总的来说,一列的行数与表中的行数相同。
  • 是的,我的问题是我想知道该列中的行数,以便能够在比较函数中进行检查
  • 每一列的行数与表本身相同,所以myColumn.Table.Rows.Count。你的问题还是没有意义的,不是吗?
  • 谢谢,我会检查的。
  • 为什么我总是收到差评!!有人添加了答案,然后他编辑了我的问题并删除了答案!

标签: c# datatable datacolumn


【解决方案1】:

即使这个问题对我来说仍然没有多大意义,如果你只是想知道一个表有多少行属于给定的DataColumn

int rowCount = myColumn.Table.Rows.Count;

注意,查找列不需要LINQ查询,可以使用DataColumnCollectionindexer that takes a string

DataColumn myColumn = Griddetails.Columns["Type"];

如果没有具有该名称的列并返回null,它会按需要工作。


在您编辑问题之后,您似乎确实想要查找类型列包含给定值的行。您可以使用 LINQ:

var matchingRows = from row in Griddetails.AsEnumerable()
                   where row.Field<string>("Type") == valueYouSearch
                   select row;

DataRow firstRow = matchingRows.FirstOrDefaul();
if(firstRow != null)
{
    // here you know that there is at least one row with that value in the type-column
    string firstType = firstRow.Field<string>("Type"); // pointless, maybe you want to return different column's value
    // ....
}

【讨论】:

  • 谢谢,请再次检查我的问题,希望它更清楚
  • @KamalF:现在您的要求似乎有所不同。您想在字符串列中查找值。有什么价值?你想对匹配的行做什么?只检查值是否存在或返回匹配的行?
  • 只检查该值是否存在,如果存在则返回该值,如果不存在则返回空字符串变量
  • @KamalF:如果值不存在,我会返回 null。否则,您无法区分找到的空字符串或未找到的空字符串(如果您搜索该值)。但是,为什么要返回一个正在搜索的值,而不仅仅是一个指示表是否包含它的bool?您正在搜索的值/变量是什么?
  • 或者你想返回匹配行的行数?那我明白你原来的问题了。
猜你喜欢
  • 2015-01-06
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多