首页 > 解决方案 > Where函数c#中的lambda默认值问题

问题描述

我的任务是使用 LINQ lambda 在列表中查找偶数或奇数。我只是用这段代码来做,但编译器说“并非所有代码路径都返回 lambda 表达式中的值”。所以我想我需要一个默认值,但我该如何实现呢?我尝试了几件事,但仍然无法正常工作。请给建议。谢谢。

 list = list.Where(x =>
        {
            if (command == "odd")
                return x % 2 != 0;

            else if (command == "even")
                return x % 2 == 0;

        });

标签: c#lambda

解决方案


如果命令是“notEvenOrOdd”,结果应该是什么?示例代码没有涵盖这种情况,因此它将失败。

使用“命令”来确定要做什么通常不是一个好的设计。另一种方法是两种扩展方法:

public static IEnumerable<int> WhereEven(this IEnumerable<int> list) => list.Where(x => x % 2 != 0);
public static IEnumerable<int> WhereOdd(this IEnumerable<int> list) => list.Where(x => x % 2 == 0);

然后,您可以检查 lambda 之外的命令并根据结果运行上述方法之一。


推荐阅读