我需要根据以下场景编写LINQ表达式:
public class Meeting
{
public int Id { get; set; }
public DateTime Date { get; set; }
public bool Selected { get; set; }
}
List<Meeting> Meetings
使用LINQ表达式,如何检索在第一个被选中之前发生的元组件?
例如,在下面的liste中,我需要检索会议ID 2。
答案 0 :(得分:6)
您可以使用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
提前停止一样。
你需要小心订购 - 你几乎假设有一堆未经选择的会议,然后是选定的会议。
答案 1 :(得分:4)
您可以使用TakeWhile
和LastOrDefault
。
Meetings.TakeWhile(m => !m.Selected).LastOrDefault()