2

テーブルの 1 つが group by を使用している場合に、3 つのテーブルで内部結合を行う方法。このクエリを作成することはできますが、実行時にエラーが返されます。では、クエリをどのように変更すればよいでしょうか。

var pastDate = DateTime.Now.Date.AddDays(-1);

var query = from l in db.picturelikes
            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
            join u in db.users on pgroup.FirstOrDefault().iduser equals u.iduser
            select new SortedDto
            {
                IdPictures = pgroup.FirstOrDefault().idpictures,
                IdUser = pgroup.FirstOrDefault().iduser,
                totalrating = pgroup.Average(l => (float?)l.likenumber) ?? 0, // pl.Where(a => a.likenumber!= null).Average(c => c.likenumber)
                sex =u.sex,
                username =u.username,
                dob = u.dob 
            };

return query;

これは、現在のコードで発生する例外です。

InnerException: { Message: "エラーが発生しました。"、ExceptionMessage: "'where 句' の不明な列 'Project2.idpictures'"、ExceptionType: "MySql.Data.MySqlClient.MySqlException"、StackTrace: " at MySql.Data. MySqlClient.MySqlStream.ReadPacket() で MySql.Data.MySqlClient.NativeDriver.GetResult(Int32&ectedRow、Int64&insertId) で MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId、Int32&ectedRows、Int64&insertId) で MySql.Data.MySqlClient .Driver.NextResult(Int32 statementId, Boolean force) で MySql.Data.MySqlClient.MySqlDataReader.NextResult() で MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior 動作) で MySql.Data.Entity.EFMySqlCommand.ExecuteDbDatoiaReader(CommandBehavior 動作) ) System.Data.Common で。System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior 動作) での DbCommand.ExecuteReader(CommandBehavior 動作)" }

私のクエリは合法ですか?groupby を使用する場合、3 つの内部結合を行う方法ですか。

4

2 に答える 2

0

変更してみてください:

group l by l.idpictures into pgroup

に:

group l by new { l.idpictures,l.idgroup } into pgroup

pgroup.FirstOrDefault().idpicturesへの参照を変更する必要がある可能性がありますpgroup.idpictures

または、グループを作り直して、最初に参加してからグループ化します。

于 2013-09-30T14:41:48.457 に答える