我可以用 lambda 得到任何简洁的信息吗?

发布于 2024-07-30 17:54:38 字数 284 浏览 2 评论 0原文

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

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

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

我能得到更简洁的吗?

I'm writing a lot of code with lambdas these days.

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

Note: GetAll() returns an IList.

Can i get any terser?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浪荡不羁 2024-08-06 17:54:38
  1. 您可以将 FindAll 后面的 ToList 替换为Where。
  2. 简单语句中 lambda 参数的流行标准是单个字符。 “node”可以重命名为“n”。
  3. 您的方法可以返回 IEnumerable 而不是 IList。 如果需要,方法调用者可以调用 ToList。

后:

return _schema.GetAll<Node>().Where(n => n.Type == NodeType.Unmanaged).Cast<Shape>();
  1. You could replace the ToList followed by a FindAll with a Where.
  2. A popular standard with lambda parameters in simple statements is a single character. 'node' could be renamed to just 'n'.
  3. Your method could return an IEnumerable instead of a IList. The method caller could then call ToList if required.

After:

return _schema.GetAll<Node>().Where(n => n.Type == NodeType.Unmanaged).Cast<Shape>();
記柔刀 2024-08-06 17:54:38

这应该有效。

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

如果您的方法的返回类型为 IEnumerable,则无需调用 ToList()

您也可以这样写(使用 IEnumerable 返回类型):

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

This should work.

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

If your method had a return type of IEnumerable<Shape> you wouldn't need to call ToList().

You could also write it like this (with IEnumerable<Shape> return type):

return from node in _schema.GetAll<Node>()
       where node.Type == NodeType.Unmanaged
       select node as Shape;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文