C# datatable 去掉为空列的行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# datatable 去掉为空列的行相关的知识,希望对你有一定的参考价值。

如果一个表tt有3列,
ID,Name,Other,

001 ,李四,12
002,王五,32
003 ,张三,
张三没有other。
select * from tt。
使用DATAtable 查出来之后,如何在datatable中去掉张三哪一行。。。

参考技术A 如果你用的是数据库里的数据,你可以在调出数据的SQL语句中加上一个条件:select ID,Name,Other where Other!=NULL(' ') 你可以根据你的数据库数据选择不等于Null或者不等于' '(空)追问

是数据库里已经查出来的数据的话,可以在查出来的datatable中去掉吗?

追答

不行的吧,因为你的数据来源就是数据库里的数据。

参考技术B select * from tt where Other!=' '追问

是数据库里已经查出来的数据的话,可以在查出来的datatable中去掉吗?

追答

for(int i=0;i<dataTable.Rows.Count;i++)

if(dataTable.rows[i][3].toString()==‘ ’)

datatable.Rows[i].Delete()。


本回答被提问者采纳
参考技术C 给你个参考http://bbs.csdn.net/topics/60342592#post-43446762追问

表示看的有点乱,可以给个具体的吗,
DataTable dt=managet.GetInfo();//得到所有数据
然后怎么弄能把张三去掉啊?可以写一下代码吗

如何计算一行中的空列?

【中文标题】如何计算一行中的空列?【英文标题】:How to count null columns in a row? 【发布时间】:2017-02-23 22:47:27 【问题描述】:

如何统计表中所有值为空的列?

具有大量列的表和方法应该以动态方式迭代列。

在任何给定的行(由标识符选择)中,计算空单元格。

Select count(number of null value cells) where id=1 from table

例如:

我有一个由 200 列组成的表我想知道有多少 null id=1 的行有没有

【问题讨论】:

How do I list all the columns in a table?的可能重复 这有点像Search All Fields In All Tables For A Specific Value (Oracle) 您想计算每行中的空值数还是每列中的空值数? 列有空值是什么意思?它在任何一行中至少有一个空值?还是所有行都为空? 在任何给定的行(由标识符选择)中,计算空单元格 【参考方案1】:

基本上,您需要检查选定行中的每一列是否为空。 由于您的表中有 200 多列,因此手动方法似乎很乏味,因此您可以将其自动化一点并通过查询 user_tab_columns 动态构建查询:

-- set up

create table t1(
  rid number primary key,
  c1 varchar2(17),
  c2 date,
  c3 timestamp,
  c4 number
);
insert into t1
  valueS(1, 'string', null, systimestamp, null);
  commit ;

-- going to use DECODE function - doesnt require type consistency.
select 'decode('||column_name||', null, 1, 0)+' as res
  from user_tab_columns
 where table_name = 'T1'

结果:

RES  
------------------------------
decode(RID, null, 1, 0)+
decode(C1, null, 1, 0)+ 
decode(C2, null, 1, 0)+     
decode(C3, null, 1, 0)+ 
decode(C4, null, 1, 0)+

最后的查询:

select decode(C4, null, 1, 0)+
       decode(C3, null, 1, 0)+
       decode(C2, null, 1, 0)+
       decode(C1, null, 1, 0)+ 
       decode(RID, null, 1, 0) as num_of_nulls
  from t1
 where rid = 1

结果:

 NUM_OF_NULLS
--------------
             2 

【讨论】:

【参考方案2】:

试试这个。您可以传递任何 ID 并获取具有 NULL 值的列数。

CREATE TABLE TEST (ID NUMBER, B VARCHAR2(20), C NUMBER, D VARCHAR2(200));
INSERT INTO TEST VALUES (1,NULL,NULL,'XX');

SELECT COUNT(NULL_COLS)
FROM (
SELECT 
to_number(extractvalue(xmltype(dbms_xmlgen.getxml('SELECT CASE WHEN '||COLUMN_NAME||' IS NULL THEN 0 ELSE NULL END COL_VAL FROM '||TABLE_NAME||' WHERE ID=&VALUE')),'/ROWSET/ROW/COL_VAL')) NULL_COLS
FROM   USER_TAB_COLUMNS
WHERE  TABLE_NAME='TEST');

【讨论】:

以上是关于C# datatable 去掉为空列的行的主要内容,如果未能解决你的问题,请参考以下文章

如何计算一行中的空列?

C#中定义了一个DataTable,怎样求得表中的最大值,并返回对应的行和列的下标啊

根据单元格原始列的行数将特定单元格的内容复制到空列

可空列的行为并非如此

c#,判断2个dataTable是不是一样的问题。。

C#OPEN XML:从EXCEL向DATATABLE获取数据时,空单元格被跳过