具有“Group By”和/或“Order by”的實體框架

asp.net c# entity-framework visual-studio-2008

假設我們有一個允許用戶下載內容的項目。在主頁面上,我想顯示下載次數最多的下載文件!所有使用EF。

我怎樣才能做到這一點 !!我用Group By嘗試了很多東西(當你在對像中獲得大量信息時,這是一場噩夢)。我仍然不知道如何做到這一點......

var query = from details in m_context.TransactionDetails
                        where details.Chanson != null
                        group details by details.Items into AnItem
                        orderby AnItem.Count()
                        select new Item() {
                            IdItem = Chansons.Key.IdItem,
                            ItemState= Chansons.Key.ItemState,
                            [...This object got something like 20 including links to other objects ... ]
                        };

有人有想法嗎?

謝謝:o)

哦,對不起我的英語,我盡我所能,但我來自魁北克(Usualy talk french)。

一般承認的答案

薩呂!

我會在這裡稍微猜測一下你的數據模型,但我認為你不需要分組:

var query = from details in m_context.TransactionDetails
            where details.Chanson != null
            orderby details.Items.Count() descending
            select new Item
            {
                IdItem = details.Chanson.IdItem,
                ItemState= details.Chanson.ItemState,
                // ...
            };

Bonne的機會!

更新:對於專輯:

var query = from details in m_context.TransactionDetails
            where details.DisqueCompact != null
            orderby details.Items.Count() descending
            select new Item 
            {
                IdItem = details.DisqueCompact.IdItem,
                ItemState= details.DisqueCompact.QuelqueChose...
                // ...
            };

根據您的數據模型,您可能需要兩個查詢。


熱門答案

對於分組數據,您可以從MSDN閱讀此方法



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因