0

この質問 ( linq で groupby を使用するときに複数の結合を行う方法) の複製ではなく、状況が変わりました。

データベースに画像評価テーブルがあります。新しい評価ごとに、新しい画像評価テーブルの行が作成されます。これらの評価を lastweek と pictureid でグループ化しています。つまり、先週の 1 つの pic に対するすべての評価が蓄積され、1 つの評価になります。その後、カウントで並べ替えることができます。次に、他の 2 つのテーブルに参加しています。2 つのテーブルには、ユーザーと画像に関連する詳細が表示されます。

これは私のコードです:

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: {
Message: "エラーが発生しました。"、
ExceptionMessage: "'where 句' の不明な列 'Apply1.idpictures'"、
ExceptionType: "MySql.Data.MySqlClient.MySqlException"

スタックトレース:

MySql.Data.MySqlClient.MySqlStream.ReadPacket()
で MySql.Data.MySqlClient.NativeDriver.GetResult(Int32&ectedRow、Int64&insertId)でMySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) で MySql.Data.MySqlClient.MySqlDataReader.NextResult() で MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) で MySql.Data.Entity.EFMySqlCommand .ExecuteDbDataReader(CommandBehavior 動作) で System.Data.Common.DbCommand.ExecuteReader(CommandBehavior 動作) で System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior 動作)

では、なぜこの例外が発生するのでしょうか? 私のlinqクエリに何か問題がありますか?

4

0 に答える 0