簡體   English   中英

獲取Entity Framework中最重復的前五項記錄

[英]Get top five most repeating records in Entity Framework

我想從鏈接到Entity Framework 4.0的表中獲得前五名最重復的記錄。 如何在單個查詢中返回五個記錄的集合列表呢?

您只需按計數分組,按計數降序,然后使用Take(5)。 分組示例以及其他示例,可以在101 LINQ Samples中找到。

實際上,您應該按定義記錄是否重復的字段分組。 例如,在您的情況下,該名稱應類似於會員ID。 然后,您可以引入新的范圍變量,該變量將保留每個組中的記錄數。 使用該變量來排序結果:

var query = from s in db.Statistics
            group s by s.MemberId into g  // group by member Id
            let loginsCount = g.Count()  // get count of entries for each member
            orderby loginsCount descending // order by entries count
            select new { // create new anonymous object with all data you need
                MemberId = g.Key,
                LoginsCount = loginsCount
            };

然后先取5:

 var top5 = query.Take(5);

那將生成查詢

SELECT TOP (5)                               // Take(5)
[GroupBy1].[K1] AS [MemberId],               // new { MemberId, LoginsCount }
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
        [Extent1].[MemberId] AS [K1],
        COUNT(1) AS [A1]                     // let loginsCount = g.Count()
        FROM [dbo].[Statistics] AS [Extent1]
        GROUP BY [Extent1].[MemberId]        // group s by s.MemberId
)  AS [GroupBy1]
ORDER BY [GroupBy1].[A1] DESC                // orderby loginsCount descending

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM