2017-06-22 72 views
-2

我有下面的代碼:修改IEnumerable的功能

public sealed class Gaaa 
     { 
      private readonly int _ids; 

      public Gaaa(int id) 
      { 
       _ids = id; 
      } 
      public static IEnumerable<Gaaa> Generate(int num) 
      { 
       return Enumerable.Range(1, num).Select(ids => new Gaaa(ids + 1)); 
      } 
     } 

我怎麼能代表不同的生成函數的代碼?

+0

你是什麼意思「不同」?你的意思是不使用點符號,而是使用更羅嗦的版本? – Sweeper

+0

@Sweeper,是的,我想使用更羅嗦的版本或其他 –

+1

字面上有無數的方法可以修改功能是不同的。請在您的問題中具體說明。 – Rob

回答

1

我假設你不喜歡點符號。這裏是你如何做到這一點:

return from id in Enumerable.Range(1, num) 
    select new Gaaa(id + 1); 

我個人比較喜歡這裏的點號,因爲你正在嘗試做的是如此簡單 - 與一個遞增的範圍內創造了一堆Gaaa秒。我認爲在這種特殊情況下使用點符號更具可讀性。

查詢符號,我覺得,更適合在涉及收集和更復雜的操作,這樣的情況下使用:

from item in aCollection 
where item.Property2 > 10 
orderby item.Property1 
select item.Property3 

而且,做一個連接時查詢符號特別更具可讀性。