0

这不是这个问题的重复(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 查询有什么问题吗?

4

0 回答 0