c# - 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;
});
解决方案
如果命令是“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 之外的命令并根据结果运行上述方法之一。
推荐阅读
- https - NodeMCU 强制门户网站服务器响应 HTTP,但不响应 HTTPS
- javascript - 当鼠标具有特定类时更改 div 的背景图像
- ios - 目前如何在 Swift 中进行观察?
- abap - 如何提取被调用程序 RAZUGA01 的输出
- arrays - 在 Swift 4.2 中解析 JSON 数据时出现 typeMismatch 错误
- asp.net-core - 如何在 IIS 上运行的 ASP.Net Core MVC 中使用共享库
- properties - 是否可以编写一个形状来验证给定属性的域和范围?
- python - 使用 print 语句对列表进行排序并存储在变量中后不会返回排序后的列表
- reactjs - axios嵌套请求函数返回
- qlikview - 将多个字符串分配给单个变量