2009-12-01 42 views
1

我剛開始學習lambda表達式。Lambda表達式 - 如果不存在,則添加到集合中

是否有可能進一步下降簡化下面的代碼:

 Customer customer = Customers.FirstOrDefault(c => c.ID == 3); 
     if (customer == null) 
     { 
      customer = new Customer() { FirstName = "Ben", LastName = "Foster", ID = 3 }; 
      Customers.Add(customer); 
     } 

     // do something with customer 
     customer.CreateProfile(); 

基本上我要檢查,如果集合中存在的對象。如果不想創建它,請將其添加到集合中,稍後再使用它。

感謝 本

+0

我看不錯。 – mquander 2009-12-01 21:42:01

回答

5

由於寫的,它似乎比需要爲它保持清晰可讀不下去了。當然,在這裏進一步濫用lambdas和運算符以將它們全部寫在一行上,但最終它們只會用於混淆代碼。

1

這可能是因爲「簡單」,你可以得到它,但像帕維爾說,這是一個有點hackish將它寫在一行上。無論如何,只要你好奇。

Customer customer = Customers.FirstOrDefault(c => c.ID == 3).DefaultIfEmpty(new Customer() { FirstName = "Ben", LastName = "Foster", ID = 3 }); 
customer.CreateProfile();
+1

如果它是新創建的,您還必須找到某種方法來「添加()」客戶。 – 2009-12-01 22:02:14

1

帕維爾是對的。順便說一句,如果你是在一個循環中做這件事,你會希望使用一個HashSet或某種字典與Id作爲你的搜索的關鍵,除了你的收藏本身,以便沒有一個O (n 2)複雜性。

相關問題