2013-09-25 37 views
0

我在mydatabase中有兩張圖片和圖片喜歡的表。如何在使用groupby時加入

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。

+0

,什麼是問題?如何將您的查詢結果加入...? –

+0

問題是如何修改picturedetails表中的總評分。 – Obvious

回答

1

那麼,首先你應該使用方法Average來計算平均值。但是,在你的情況 但是,你需要計算整體評價,你爲什麼不計算總和與平均值在相同的步驟:

db.picturelikes.GroupBy(n => n.idpictures).Select(group => 
new LikesandPictureDetails 
{ 
    IdPictures = group.Key, 
    averageRating = (group.AsEnumerable().Average(o => o.individualrating)), 
    totalRating = (group.AsEnumerable().Sum(o => o.individualrating)),  
}); 
+0

感謝您的建議。但它沒有解決任何問題。 – Obvious

+1

那麼你有什麼問題?你不能用你的圖片標記應用已計算的值?您在這些預先計算的組中擁有圖片ID。只需使用'Where' linq子句對照您的照片即可。 –

+0

問題是如何在我的picturedetails表中添加這些值。 – Obvious