mydatabase には、picturedetails と picture likes の 2 つのテーブルがあります。
public partial class picturedetail
{
public int idpictures { get; set; }
public int iduser { get; set; }
public string picTitle { get; set; }
public string picFilename { get; set; }
public System.DateTime pictime { get; set; }
public int likes { get; set; }
public int nuditylevel { get; set; }
public int fakeslevel { get; set; }
}
public partial class picturelike
{
public int idpicturelike { get; set; }
public int idpictures { get; set; }
public int iduser { get; set; }
public System.DateTime iddatetime { get; set; }
public int iduserlikedby { get; set; }
public int likenumber { get; set; }
}
匿名型エラーを回避するためのデータ転送オブジェクト (DTO)
public class LikesandPictureDetails
{
public int IdPicturess { get; set; }
public int IdUserPic { get; set; }
public string PicTitle { get; set; }
public string picFilename { get; set; }
public System.DateTime? PicTime { get; set; }
public int Likes { get; set; }
public int NudityLevel { get; set; }
public int FakesLevel { get; set; }
public int IdPicturelike { get; set; }
public int IdUser { get; set; }
public System.DateTime? IdDatetime { get; set; }
public int IduserLikedby { get; set; }
public int LikeNumber { get; set; }
public int IdPictures { get; set; }
public float totalrating { get; set; }
public int Count { get; set; }
}
写真の個々の評価を数えて、その数で割ることに成功しました。ここで、写真の詳細テーブルに合計を表示したいと思います。このことを達成する方法は?これは私のコードです:
var query =
db.picturelikes.GroupBy(n => n.idpictures).Select(group =>
new LikesandPictureDetails
{
IdPictures = group.Key,
totalrating = (group.AsEnumerable().Sum(o => o.individualrating)) / group.Count(),
});
ここでは、likesandpicturedetails が dto として機能しています。