代码之家  ›  专栏  ›  技术社区  ›  geejay

能给我拿点燕尾服吗?

  •  4
  • geejay  · 技术社区  · 16 年前

    我这几天在写很多关于lambda的代码。

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

    注意:getall()返回一个ilist。

    能给我些特瑟吗?

    2 回复  |  直到 16 年前
        1
  •  3
  •   James Newton-King dbc    16 年前
    1. 你可以用where替换tolist,后面跟着findall。
    2. 简单语句中lambda参数的流行标准是单个字符。节点“”只能重命名为“n”。
    3. 方法不能返回IEnumerable而不是IList。如果需要,方法调用方可以调用ToList。

    后:

    return _schema.GetAll<Node>().Where(n => n.Type == NodeType.Unmanaged).Cast<Shape>();
    
        2
  •  2
  •   Eric Schoonover thSoft    16 年前

    这应该有效。

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

    如果方法的返回类型为 IEnumerable<Shape> 你不需要打电话 ToList() .

    你也可以这样写(用 IEnumerable<形状> 返回类型):

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