2015-09-29 31 views
-2

我有一个数据表有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的值。

任何帮助?

+0

我不明白你的问题。 'myColumn'是一个'DataColumn'。一列属于一个表。一个表可以有多个'DataRows',每行都有每列的值。但总的来说,一列的行数与表中的行数相同。 –

+0

是的我的问题是我想知道此列中的行数,以便能够在比较函数中检查此行 – KamalF

+0

每列与表本身具有相同的行数,所以'myColumn.Table.Rows.Count' 。你的问题仍然毫无意义,不是吗? –

回答

0

即使这个问题仍然没有太大的意义对我来说,如果你只是想知道一个表中有多少行有一个属于给定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 
    // .... 
} 
+0

谢谢,请再次检查我的问题,希望它更清楚 – KamalF

+0

@KamalF:现在您的要求似乎有所不同。你想在字符串列中找到一个值。什么价值?你想用匹配行做什么?只要检查值是否存在或返回匹配的行? –

+0

只是检查值是否存在,如果是,则返回值,如果不是,则返回空字符串变量 – KamalF

相关问题