2015-04-29 17 views
1

我有一個字符串數組,它具有我需要解析的可變數量的屬性。我使用LINQ來解析這些數據,但不能認爲有一種更高效/更優雅的方式來實現這一點,而不是像我所做的那樣複製LINQ。 有沒有考慮到NULL值(因爲屬性可能會或可能不會出現在陣列中),比我在這裏做一個固有方式:重構LINQ查詢以適應空值/缺少屬性

MyCollection.StringArray 
    .Where(e => e.name == "aproperty") != null 
     ? MyCollection.StringArray.Where(e => e.name == "aproperty") FirstOrDefault().value 
     : string.Empty; 

最終,所有我想要做的就是從拉動值該屬性是否存在於集合中,否則我需要一個空字符串(或null)。但是,我不希望拋出任何異常。

+1

那不能編譯。請提供編譯代碼,或者至少提供能夠清楚顯示您想要實現的代碼。 –

+0

你有StringArray嗎?或者你有自己的對象列表? –

回答

1

如果你想阻止你,如果你想訪問一個空序列的異常,可以使用DefaultIfEmpty

string value = MyCollection.StringArray 
    .Where(e => e.name == "aproperty") 
    .Select(e => e.value) 
    .DefaultIfEmpty(string.Empty) 
    .First(); 

重要的是要選擇value財產第一是安全的,即使是非常重要的它不存在。使用DefaultIfEmpty,您可以使用First而不是FirstOrDefault