2012-08-06 77 views
0

这是我曾尝试LINQ的测试空或空字段

Dim B = (From r In _db.Personnel _ 
     Where !(r.BldgDist.Trim() = String.Empty) _ 
     Order By r.BldgDist _ 
     Select r.BldgDist).ToList().Distinct() 
For Each ab In B 
    list.Add(New ListItem(ab.BldgDist, ab.BldgDist)) 
Next 

但在爆炸它告诉我,一个标识符的预期。不知道我明白缺少什么。我只是试图消除null值和空字符串值,然后我加载到列表中。

任何帮助表示赞赏。谢谢

+0

但是当我这样做,我得到告诉我,ab.BldgDist不是“串”,当我把它改为不,我得到一个财产被宣布为字符串 – 2012-08-06 20:49:34

回答

1

!是一个C#操作符,而不是VB。改为使用Not(或<>)。例如:

Where Not (r.BldgDist.Trim() = String.Empty) 

或者

Where r.BldgDist.Trim() <> String.Empty 
3

VB.Net不承认!,但你可以使用<>Not操盘手。

Dim B = (From r In _db.Personnel _ 
    Where (r.BldgDist.Trim() <> String.Empty) _ 
    ... 
+0

成员的intellisence智能感知即使属性被声明为字符串,ab.BldgDist也不是'String'的成员。 – 2012-08-06 20:53:55

+0

我无法说出为什么发生在您发布的摘录中。如果使用''''''或'String.IsNullOrEmpty(r.BldgDist.Trim())',会发生什么? – 2012-08-06 20:56:08

+0

@TomS第二个错误是由于第一个查询返回一个列表,并将其分配给B这一事实。当您通过B使用foreach时,变量“ab”将是一个字符串。您不能在循环内执行“ab.BldgDist”。你应该用“list.Add(New ListItem(ab,ab))”来替换正文(在已经做了Dennis提议的更改之后 – Tormod 2012-08-07 06:44:56