如何在三個表上使用內部聯接,當其中一個表使用分組時。我能夠編寫這個查詢,但它在運行時返回錯誤。那麼我應該如何修改我的查詢。內部使用Linq加入三個表
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:{消息: 「發生了錯誤。」 ExceptionMessage: 「未知列 'Project2.idpictures' 在' where子句「 」 ExceptionType: 「MySql.Data.MySqlClient.MySqlException」,堆棧跟蹤:「 在MySql.Data.MySqlClient.MySqlStream.ReadPacket()在 MySql.Data.MySqlClient.NativeDriver.GetResult(的Int32 & affectedRow, Int64 & in sertedId)在MySql.Data.MySqlClient.Driver.GetResult(的Int32 statementId,的Int32 & affectedRows,Int64的& insertedId)在 MySql.Data.MySqlClient.Driver.NextResult(的Int32 statementId,布爾 力)在MySql.Data.MySqlClient .MySqlDataReader.NextResult()在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(的CommandBehavior 行爲)在 MySql.Data.Entity.EFMySqlCommand.ExecuteDbDatoiaReader(的CommandBehavior 行爲)在 System.Data.Common.DbCommand.ExecuteReader( CommandBehavior行爲) at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,Co mmandBehavior behavior)「}
我的查詢是否合法?在使用groupby時,是否需要執行三個內部聯接?
嘗試使用'pgroup.Key'而不是'pgroup.FirstOrDefault()。idpictures' –
pgroup.key讓我能夠訪問類似於不是idpictures和其他的鍵。 – Obvious
所以我不能加入使用pgroup.key – Obvious