我遇到一个奇怪的问题,即linq语句返回多个实体,即使它有.FirstOrDefault()
。
var endlog = from e in endLogs
where e.user_id == log.user_id && e.end_time <= log.start_time
group e by e.end_time into g
select g.OrderByDescending(x => x.end_time).FirstOrDefault();
user_state_log eLog = endlog.SingleOrDefault();
这样做是选择最近结束时间与提供的log
相比较的日志。
我在user_state_log eLog = endlog.SingleOrDefault()
上得到一个例外,说明变量中有多个实体。有什么想法吗?
答案 0 :(得分:2)
您确定要使用group e by
代替orderby
吗?分组有可能包含多个实体。
答案 1 :(得分:1)
您的FirstOrDefault
正在应用select
的结果,该结果针对每个组(g
)发生一次。我相信结果是endlog
中的每个值都是单个项而不是组。
您可能打算将FirstOrDefault
应用于查询而不是投影(select
):
var endlog = (from e in endLogs
where e.user_id == log.user_id && e.end_time <= log.start_time
group e by e.end_time into g
select g.OrderByDescending(x => x.end_time)).FirstOrDefault();