我可以得到任何有lambdas的terser吗?

时间:2009-07-31 12:42:50

标签: c# lambda

这些天我用lambdas写了很多代码。

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

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

我可以得到任何一个人吗?

2 个答案:

答案 0 :(得分:3)

  1. 您可以使用Where。
  2. 替换ToList,后跟FindAll
  3. 简单语句中具有lambda参数的流行标准是单个字符。 'node'可以重命名为'n'。
  4. 您的方法可以返回IEnumerable而不是IList。然后,方法调用者可以根据需要调用ToList。
  5. 后:

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

答案 1 :(得分: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;