2011-12-21 188 views
2

我已經刪除了所有不必要的變量,並嘗試將焦點直接集中在手頭的問題上。我有一個變量,它可以返回空值:允許將空值添加到列表

var ppl = from p in xyz.new_ppl 
      select new 
      { 
       p.name 
      }; 

我查詢,並將其添加到列表:

foreach (var peeps in ppl) 
{ 
    peopleList.Add(peeps.name); 
    peopleNames = peopleList; 
} 

這工作時,我添加where子句select語句前檢查檢查爲空值使用此聲明

where p.name != null 

我想要能夠做的是允許添加空值。所以我嘗試firstordefault但沒有工作

name = p.name.FirstorDefault() 

錯誤說我不能施放一個字符字符串。 peopleNames是一個setter類型的字符串getter方法。任何解決方法或解決方案?

+0

爲什麼這個'peopleNames = peopleList;'在循環內部? – V4Vendetta 2011-12-21 11:11:53

+0

運行原始代碼時得到的錯誤是什麼?忽略p.name.FirstOrDefault()的東西和你在使用時得到的錯誤;這不是你想要的。 – HackedByChinese 2011-12-21 11:13:24

+0

@HackedByChinese我現在已經遠離那臺機器,但是我得到一個空指針異常。當我檢查數據時,我發現peeps.name有一個空值,我仍然想傳遞給列表。 – 2011-12-21 13:41:07

回答

0

你想嘗試這樣嗎?

var ppl = from p in xyz.new_ppl 
      select new 
      { 
       p == null ? null : p.name 
      }; 
+0

@abatishchev當我有權訪問另一臺計算機時,我會定義嘗試一下。 – 2011-12-21 13:49:14

+0

@John:其實這是單聲道的答案(右側的頭像):)我剛剛編輯它(頭像左側) – abatishchev 2011-12-21 16:27:16

+0

@ mono68:我的壞..我會檢查出來,讓你知道。謝謝 – 2011-12-21 18:11:39

2
from p in xyz.new_ppl 
select p.name; 
+0

@ aba:在stackoverflow論壇中,嘗試給出解答你的答案。這可能對新用戶有所幫助。 – karthik 2011-12-21 12:06:07

+0

@aba感謝您的回覆,但正如我所提到的,我簡化了這個問題。我需要檢索多個值,比如說p.name,p.age等...我想我嘗試了這一點,但最終認爲我必須創建匿名變量來檢索多個屬性,但我會稍後檢查確定 – 2011-12-21 13:48:19

0

當你做p.name.FirstorDefault()這意味着你試圖讓字符串p.name的第一個字符。所以編譯器錯誤是正確的(以爲我不知道爲什麼它不能隱式地將字符轉換爲字符串 - 但這是另一回事:))

但是,如果你想要添加空值,爲什麼不刪除where p.name != null

+0

如果我刪除了where p.name!= null,則不會添加nulls。我得到一個空指針異常。我似乎無法弄清楚這一點,所以我通過設置一個空字符串變量來代替所有null roww值來處理空值。 – 2011-12-31 03:42:39

+0

什麼類型是'peopleList'的?你能粘貼堆棧跟蹤和異常消息嗎? – 2012-01-11 18:45:39

+0

人物列表是字符串類型。我目前無法訪問代碼。如果其中一個屬性表示p,我得出的結論是在選擇新的{x = p.name,y = p.age ... etc}中。年齡是空的,就像我的情況,它拋出一個空例外。我試圖通過做一些像y == null那樣的方式來處理它。 null:p.age或y = p.age ?? 「空」,如此等等無濟於事。唯一有用的是實際包含p.age!= null的地方,這樣即使p.name包含數據,它也會跳過整行並轉到下一行。我會盡快粘貼堆棧跟蹤 – 2012-01-14 08:43:19