【问题标题】:Querying Datatable with where condition使用where条件查询数据表
【发布时间】:2012-03-30 07:14:43
【问题描述】:

我有一个包含两列的数据表,

Column 1 = "EmpID"
Column 2 = "EmpName"

我想查询数据表,针对EmpID 列和 Empname.

例如,我想获取值在哪里

(EmpName != 'abc' or EmpName != 'xyz') and (EmpID = 5)

【问题讨论】:

  • @QQping,我做不到。不知道。刚开始在数据表中查询

标签: c# linq datatable


【解决方案1】:

这样的……

var res = from row in myDTable.AsEnumerable()
where row.Field<int>("EmpID") == 5 &&
(row.Field<string>("EmpName") != "abc" ||
row.Field<string>("EmpName") != "xyz")
select row;

另请参阅 LINQ query on a DataTable

【讨论】:

  • 错过了,我怎样才能得到返回的行数。谢谢
  • 对不起,我不能。当我将 res.count 转换为 Int...{"Specified cast is not valid."}{system.SystemException {System.InvalidCastException} 时出现此错误
  • VB ex: Dim result = From row In myDataTable.AsEnumerable() Where row.Field(Of Integer)("myColumn1") > 0 And row.Field(Of Integer)("myColumn2") > 0 选择行
【解决方案2】:

正如 mamoo 所示,您可以使用 Linq 做到这一点,但 oldies 也很好:

var filteredDataTable = dt.Select(@"EmpId > 2
    AND (EmpName <> 'abc' OR EmpName <> 'xyz')
    AND EmpName like '%il%'" );

【讨论】:

  • 请原谅我的好奇心,'EmpId > 2' 有什么用?
  • @AnarKhalilov 这只是一些语法示例。也没有要求“喜欢”。
【解决方案3】:

类似的东西? :

DataTable dt = ...
DataView dv = new DataView(dt);
dv.RowFilter = "(EmpName != 'abc' or EmpName != 'xyz') and (EmpID = 5)"

这是您要搜索的内容吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多