2013-06-20 39 views
-3

我有以下的(容易)表:显示在IEnumerable的查询中的所有空字段

表:MyDataTable

**Color** 
Blue 
null 
Red 
Yellow 
null 
null 
Green 

此查询(例如):

query = 
     from user in MyDataTable.AsEnumerable() 
     where (user.Field<string>("Color") != null ? user.Field<string>("Color").Contains("") : false) 
     select user; 

显示所有不为空的字段。

编辑:对不起,我的问题是在标题。我想要查询只显示空字段。 如何? 关心!

+1

为什么你需要编写一个查询返回数据集中的所有内容?这听起来像是在浪费CPU周期而什么都不做。 – evanmcdonnal

+0

因为这是一个简单的查询,这是一个简单的例子。我的应用有一个更复杂的查询。我的应用程序只显示(默认)10项。空字段在查询中生成异常,并且空字段不显示在DataGridView中。 –

+0

null不会在查询中生成异常。它可能会在您尝试在DataGridView中显示它时。在这种情况下,你需要像'值? “null”''基本上说'if(value == null)value =“null”'你要添加项目的地方。关键是没有查询要写在这里,你只需调用'AsEnumerable()'或'AsEnumerable().ToList()'或'.ToArray()'来转换你的dt。 – evanmcdonnal

回答

2

删除where条款:

var query = from user in MyDataTable.AsEnumerable() 
      select user; 

或者干脆:

var query = MyDataTable.AsEnumerable(); 
+3

对于这个问题,也删除from和select子句。 'MyDataTable.AsEnumerable()'是你所需要的。 –

+0

@ p.s.w.g - 哈哈是的,好点。 –

+0

非常感谢您的帮助。是的,这段代码显示了所有的字段,但是我不能只显示空字段。 –

1

我想提出一个查询,显示所有字段(包括空字段)。

要显示一切,只是直接使用该表:

query = MyDataTable.AsEnumerable(); 

注意,您可以使用String.IsNullOrEmpty简化现有查询:

query = 
    from user in MyDataTable.AsEnumerable() 
    where !string.IsNullOrEmpty(user.Field<string>("Color")) 
    select user; 
+0

他希望显示* all *值的查询,包括那些为空的查询。 – Servy

+0

@Servy已经修复;) –

相关问题