在查询语法中,我可以写
var greendoorsWithRooms = from room in house.roooms
from door in room.doors
where door.Color = green
select new {d=door,r=room}
有没有一种方法可以通过点分语法实现相同目的?
var greendoorsWithRooms = house.rooms.SelectMany(room=>room.Doors)
.Where(door=>door.Color==green)
.Select(door=>new{ <room is not in scope> }
我正在教一些非程序员针对专有对象模型使用LINQPad,这样我们就不必在每种奇怪的情况下都可以创建GUI。如果他们不必学习查询语法,那将是有益的。目前,我已经提供了使用foreach解决此问题的代码段,但问题有时还是会出现。
最佳答案
这也是可能的:
house.rooms.SelectMany(room => room.Doors.Where(door => door.Color == green),
(room, door) => new { r = room, d = door })
这是
SelectMany
的this重载。关于c# - 在Linq中使用点分语法时,可以访问SelectMany的 “parent”跳过吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7611081/