2012-08-31 41 views

回答

1

建立在坎迪的答案,如果您使用的匿名類型,你需要指定null屬性值:

class Name 
{ 
    public string FirstName { get; set; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var names = new List<Name>() { new Name() { FirstName = "Albert"}, 
             new Name() { FirstName = "Bob"}}; 

     var values = from n in names 
        select new 
        { 
         FirstVal = null as object, 
         SecondVal = n.FirstName, 
         ThirdVal = null as object 
        }; 
    } 
} 

您不能分配null到一個匿名類型的屬性,所以你必須將它投射到object

+0

你沒有投空反對;您可以轉換爲任何其他引用類型或可爲空值類型。而且,'(object)null'比'null作爲object'更有意義。我想編譯器會優化「as」操作,但爲什麼要把它放在第一位呢? – phoog

+0

我想盡可能投射到物體的底部。使用我知道的'as'符號會返回'null',所以我就這樣做了。這更清楚一點(對我來說至少)。無論是使用「as」還是直接投射,都可能按照您的建議進行編譯。 –

0

感謝的是, 我想我找到了另一種方式,但沒有測試:

select new 
{ 
    firstVal = String.Empty, 
    SecondVal = n.FirstName 
} 
+1

string.Empty和null之間有區別。通常,null表示該值未設置,而string.empty表示已設置爲空值。 –