如何在DataTable c#中选择布尔值?

时间:2014-10-30 11:23:13

标签: c# datatable

我有一个包含两列的数据库表,例如Name -varchar(50)和Valid -boolen

----------------
Name    Valid
----------------
John    True
John    False
----------------

我必须只选择Name是'John'而Valid是'True'。我尝试了下面的代码,但它没有返回任何东西。请帮助我。

conList = conTable.Select(string.Format(@"Name='{0}' AND Valid='True'", "John")).ToList();

3 个答案:

答案 0 :(得分:3)

您可以使用LINQ(-To-DataTable):

var rows = from row in conTable.AsEnumerable()
           where row.Field<bool>("Valid") && row.Field<string>("Name") == "John"
           select row;

如果您想从结果中使用新的DataTable

DataTable filtered = rows.CopyToDataTable();

或者您可以循环foreach中的行,或使用ToArrayToList创建不同的集合。

一体化通过方法语法(效率不高):

DataTable filtered = conTable.AsEnumerable()
    .Where(row => row.Field<bool>("Valid") && row.Field<string>("Name") == "John")
    .CopyToDataTable();

答案 1 :(得分:0)

conList = conTable.Select(string.Format(@"Name='{0}' AND Valid", "John")).ToList();

答案 2 :(得分:0)

你可以使用linq。示例如下。

List<DataRow> dataRows = (from DataRow dr in yourTable.Rows 
                          where (bool)dr["Valid"] == true && (string)dr["Name"] == "John" 
                          select dr).ToList();

dataRows.ForEach(p => Console.WriteLine("Name : {0}, Valid : {1}", p["Name"], p["Valid"]));