这不是这个问题的重复(How to do multiple joins when using groupby in linq),情况已经改变。
我的数据库中有一个图片评级表。对于每个新评级,将创建一个新的图片评级表行。我将这些评级按上周和图片编号进行分组,这意味着上周一张图片的所有评级将被累积并成为一个评级。然后我将能够按他们的数量对它们进行排序。然后我加入另外两个表,两个表显示用户和图片相关的详细信息。
这是我的代码:
public IQueryable<SortedDto> GetOne()
{
var pastDate = DateTime.Now.Date.AddDays(-1);
var combo = from l in db.picturerating
where l.iddatetime > pastDate
group l by l.idpictures into pgroup
let count = pgroup.Count()
orderby count descending
join p in db.picturedetails on pgroup.FirstOrDefault().idpictures equals p.idpictures into first
join u in db.users on pgroup.FirstOrDefault().iduser equals u.iduser into second
select new SortedDto
{
IdPictures = pgroup.FirstOrDefault().idpictures,
IdUser = pgroup.FirstOrDefault().iduser,
IdDatetime = first.FirstOrDefault().pictime,
totalrating = pgroup.Average(l => (float?)l.rating) ?? 0, sex =second.FirstOrDefault().sex,
username =second.FirstOrDefault().username,
dob = second.FirstOrDefault().dob
};
return combo;
}
运行此代码时,我收到如下异常:
InnerException:{
消息:“发生错误。”,
ExceptionMessage:“'where子句'中的未知列'Apply1.idpictures'”,
ExceptionType:“MySql.Data.MySqlClient.MySqlException”堆栈跟踪:
在 MySql.Data.MySqlClient.MySqlStream.ReadPacket()
在 MySql.Data.MySqlClient.NativeDriver.GetResult(Int32&affectedRow, Int64&insertedId) 在 MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32&affectedRows, Int64& insertedId) 在MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) 在 MySql.Data.MySqlClient.MySqlDataReader.NextResult() 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior 行为) 在 MySql.Data.Entity.EFMySqlCommand .ExecuteDbDataReader(CommandBehavior 行为)在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior 行为)在 System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,CommandBehavior 行为)
那么为什么我会得到这个异常呢?我的 linq 查询有什么问题吗?