在查询语法中,我可以写

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 })

这是SelectManythis重载。

关于c# - 在Linq中使用点分语法时,可以访问SelectMany的 “parent”跳过吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7611081/

10-08 21:55