使用Linq在数据表查询中排除NULL值

时间:2015-08-25 19:12:53

标签: vb.net linq

我有一行代码会给我一系列会议ID(字符串),当数据表中没有空值时,这些代码ID非常有用:

meetingIDs = meetingDateTable.AsEnumerable.Select(Function(x) x.ScheduleItemID).Distinct.ToArray()

我需要修改该行,使其不会出错,并从结果中排除空值。这是我尝试过的,但仍然会出错:

meetingIDs = meetingDateTable.AsEnumerable.Select(Function(x) x.ScheduleItemID).Where(Function(y) y <> String.Empty).Distinct.ToArray()

有人能告诉我我做错了吗?

编辑: meetingDateTable是一个强类型数据表。 x.ScheduledItemID是一个可以为null的字符串。

3 个答案:

答案 0 :(得分:1)

使用@DavidY和@DStanley答案这是最终的解决方案:

project.json

也许可以写得更好?

答案 1 :(得分:0)

如果x.ScheduleItemID是一个字符串并且可以为null,那么更安全的查询将是

meetingIDs = meetingDateTable.AsEnumerable _
                             .Select(Function(x) x.ScheduleItemID) _
                             .Where(Function(y) Not String.IsNullOrEmpty(y)) _
                             .Distinct.ToArray()

答案 2 :(得分:0)

在选择之前,您可以先过滤掉所有的空ScheduleItemID。

meetingIDs = meetingDateTable.AsEnumerable. _
              Where(Function(id) Not String.IsNullOrWhiteSpace(id.ScheduleItemID)). _
              Select(Function(y) y.ScheduleItemID)). _
              Distinct.ToArray()