2009-07-31 14 views
4

這幾天我正在用lambda編寫很多代碼。我可以得到任何與lambda一起terser?

return _schema.GetAll<Node>() 
      .ToList() 
      .FindAll(node => node.Type == NodeType.Unmanaged) 
      .Cast<Shape>() 
      .ToList(); 

注意:GetAll()返回一個IList。

我可以得到任何terser嗎?

+0

我怎麼可以編輯代碼,以便它顯示在兩行呢? – geejay 2009-07-31 12:44:10

+0

在代碼中的適當位置添加換行符,確保第二行的間隔適當。 – 2009-07-31 12:45:21

回答

3
  1. 你可以更換ToList後跟一個的FindAll用在哪裏。
  2. 在簡單語句中使用lambda參數的流行標準是單個字符。 'node'可以重命名爲'n'。
  3. 您的方法可能會返回一個IEnumerable而不是IList。如果需要,方法調用者可以調用ToList。

後:

return _schema.GetAll<Node>().Where(n => n.Type == NodeType.Unmanaged).Cast<Shape>(); 
2

這應該工作。

return _schema.GetAll<Node>() 
    .Where(node => node.Type == NodeType.Unmanaged) 
    .Cast<Shape>() 
    .ToList() 

如果你的方法有中IEnumerable<Shape>返回類型,你就不會需要調用ToList()

你也可以把它寫像這樣(IEnumerable<Shape>返回類型):

return from node in _schema.GetAll<Node>() 
     where node.Type == NodeType.Unmanaged 
     select node as Shape; 
相關問題