我需要根据以下场景编写一个 LINQ 表达式:
public class Meeting
{
public int Id { get; set; }
public DateTime Date { get; set; }
public bool Selected { get; set; }
}
List<Meeting> Meetings
使用 LINQ 表达式,如何检索发生在第一个被选中的之前的 session ?
例如,在下面的列表中,我需要检索 session ID 2。
请您参考如下方法:
您可以使用 TakeWhile 和 LastOrDefault :
var meeting = Meetings.TakeWhile(m => !m.Selected)
.LastOrDefault();
if (meeting != null)
{
// Use the meeting
}
else
{
// The first meeting was selected, or there are no meetings
}
TakeWhile当它遇到与谓词不匹配的第一个项目时基本上停止 - 它就像
Where换句话说,这会提前停止。
不过,您需要小心订购 - 您几乎假设有一堆未选定的 session ,然后是选定的 session 。
