C# DataTable.Select() - 如何格式化筛选条件以包括 null 值?

4

这不起作用。

DataTable myNewTable = myDataTable.Select("Name <> 'n/a'").CopyToDataTable();

myDataTable有一个名为Name的行。我想选择这个表中Name不等于“n/a”的行。它可以选择,但我还缺少空值,我也需要空值。

有人能帮忙吗?

4个回答

20

5

试一下以下方法:

DataRow rows = DataTable.Select("[Name]<>'n/a'")

在此进行空值检查:

DataRow rows =  DataTable.Select("[Name] <> 'n/a' OR [Name] is NULL" )

这不会包括 Name 为空的行。 - Anthony Pegram
你的编辑只是让这个答案成为其他已经给出正确答案的答案的重复。它没有任何意义,你应该删除它。 - Anthony Pegram
@user414076 也许你是正确的,正如其他人所提到的,我没有提到它。但还是谢谢。我又编辑了一下。 - Freelancer
也许 'DataRow rows =' 会变成 'DataRow[] rows ='。 - Zeeshanef

4
尝试这个:

var result = from r in myDataTable.AsEnumerable()  
            where r.Field<string>("Name") != "n/a" &&  
                  r.Field<string>("Name") != "" select r;  
DataTable dtResult = result.CopyToDataTable();  

您不需要过滤空字符串。然而,谓词的第一部分对他来说是有效的。 - Anthony Pegram
@user414076,如果用户想要检查字符串是否为空? - SeeSharp
如果用户想要这样做,那么是包含在内的。但是这位用户没有提及它。他只想用查询过滤掉“n/a”。他的问题是代码也在过滤null值。他不希望这样,因此可以推断出他也不想过滤掉空字符串。明白了吗? - Anthony Pegram

3

检查 null 的方法是检查它是否存在:

DataRow[] myResultSet = myDataTable.Select("[COLUMN NAME] is null");

您可以在 Select 语句中使用 andor

这并没有展示出正确的解决方案,它只展示了其中的一部分。 - Anthony Pegram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接