从数据表中选择一列以检查其值

时间:2015-09-29 09:27:12

标签: c# datatable datacolumn

我有一个数据表,其中包含3列"名称","类型"," ID"我想在其中仅使用一列进行比较。这是" Type"。我想将该列放在与数据表分离的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的数据列的值循环。

任何帮助?

1 个答案:

答案 0 :(得分:0)

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

int rowCount = myColumn.Table.Rows.Count;

请注意,您不需要LINQ查询来查找列,您可以使用DataColumnCollection indexer 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
    // ....
}