2012-08-06 78 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