テーブルの 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 つの内部結合を行う方法ですか。