繁体   English   中英

Linq FirstOrDefault返回多个

[英]Linq FirstOrDefault returning multiple

我遇到一个奇怪的问题,即使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相比具有最近结束时间的log 我在user_state_log eLog = endlog.SingleOrDefault()user_state_log eLog = endlog.SingleOrDefault()异常,指出该变量中有多个实体。 有任何想法吗?

您确定要使用group e by而不是orderby吗? 分组有可能包含多个实体。

您的FirstOrDefault将应用于select的结果,该结果对于每个组( g )都会发生一次。 我相信结果是endlog每个值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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM