C在一个DataTable中,Select方法如何写筛选条件达到过滤出数值型空的值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C在一个DataTable中,Select方法如何写筛选条件达到过滤出数值型空的值?相关的知识,希望对你有一定的参考价值。

比如一个DataTable 的结构和数据如下
StuNo(char3) StuAge(int)
001 1
002
003 3
这么使用Select方法,从而可以达到把002选出来(因为StuAge空)。
注意,列StuAge没有默认值。所以如果没有给它赋值,他的值是System.DBNull.Value.
需要说明的是,我不想通过循环语句一条记录一条记录地查找。所以必须要用DataTable的Select方法实现。
谢谢大家!

参考技术A 你的002 StuAge是 NULL 的话
select * from DataTable where StuAge is null

Datatable LINQ select datarow 只返回一行以及如何排序

【中文标题】Datatable LINQ select datarow 只返回一行以及如何排序【英文标题】:Datatable LINQ select datarow only returning one row and how to order 【发布时间】:2014-07-16 15:27:41 【问题描述】:

我有一个包含 4 列的数据表

- A|1|苹果|萝卜 - A|2|水|水果 - B|1|水|橙 - B|2|水|芒果 - C|1|你好|世界

我想要做的是选择不同的 A 列。然后我想根据 A 列选择不同的列 2、3、4。

这就是我用来选择不同列 A 的方法。我对第一部分的问题是如何按列 A (linkControl) 排序。成员是我的数据表,这将返回每个不同的列 a

    var linkControl = Member.AsEnumerable()
                            .Select(row => new
                            
                                linkCon = row.Field<string>("LinkControl")
                            )
                            .Distinct();

然后因为我想迭代每个 linkCon,我执行以下操作,即使每个 linkCon 大约有 20 个数据行,它也只返回一个数据行。如何返回所有行?

 foreach (var linkC in linkControl)
    
var linkControllink = (from DataRow dr in ADMemberships.Rows
                               where dr["LinkControl"] == linkC.linkCon
                               orderby (string)dr["URLDescription"]
                               select dr);




        foreach (var lcl in linkControllink)
        
                //only has one row in it
         

【问题讨论】:

【参考方案1】:

我不得不将代码更改为where dr["LinkControl"].ToString() == linkC.linkCon.ToString(),我真的不明白为什么。

【讨论】:

以上是关于C在一个DataTable中,Select方法如何写筛选条件达到过滤出数值型空的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 DataTable.Select() 结果传递给新的 DataTable?

如何使 DataTable 可枚举?

c# datatable 分组并统计

在DataTable和DataView中查找指定记录

如何在 DataTable.Select(Expression) 中使用 SELECT GROUP BY?

我们可以在 c# 中的 datatable.select 中添加参数吗