我有一个包含两列的数据库表,例如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();
答案 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
中的行,或使用ToArray
或ToList
创建不同的集合。
一体化通过方法语法(效率不高):
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"]));