c# - 如何将此 foreach 转换为 LINQ
问题描述
这段代码与 LINQ 有何相似之处?看起来很简单,但真的不知道怎么做
private IRoom FindRoom(List<IHotel> hotels,IRoom selectedRoom)
{
foreach(var hotel in hotels)
{
foreach(var room in hotel.Rooms)
{
if (selectedRoom.Equals(room))
return room;
}
}
return null;
}
解决方案
private IRoom FindRoom(List<IHotel> hotels,IRoom selectedRoom)
{
var hotel = hotels.SingleOrDefault(x => x.Rooms.Any(r => r == selectedRoom));
if (hotel != null)
{
return hotel.Rooms.Single(x => x == selectedRoom);
}
else
{
return null;
}
}
推荐阅读
- php - 通过 PHP 显示一个按钮
- javascript - 使用 JavaScript 事件调整窗口大小时如何调整图像大小?
- html - 格式化 HTML 表单
- node.js - API 调用仅适用于 IP 地址,不适用于我的域(Node.js Express、Godaddy、Google Compute Engine)
- git - 无法通过 PhpStorm [MacOs] 将文件推送到 GitHub
- java - 为什么这个基于数组的 Java 游戏不起作用?
- f# - 递归异步方法失去了它的上下文
- tensorflow - 为什么我们在张量流中输入 seq2seq 模型时要反转输入(tf.reverse(inputs,[-1]))
- testing - 如何测试电子生成器自动更新流程?
- c++ - 收银员计划