首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ to SQL -分组依据

问LINQ to SQL -分组依据
EN

Stack Overflow用户
提问于 2009-08-14 01:46:42
回答 2查看 1.2K关注 0票数 0

我正在尝试弄清楚如何为下面的SQL创建LINQ- to -SQL,但没有任何运气。任何帮助都将不胜感激。最好使用响应的C#代码。此外,为简洁起见,未显示PKey以外的索引。

表架构:

代码语言:javascript
复制
CREATE TABLE [dbo].[FileHashes](
[ID] [uniqueidentifier] NOT NULL,
[FileName] [nvarchar](255) NULL,
[FileSize] [bigint] NULL,
[FileDirectory] [nvarchar](255) NULL,
[SHA-1] [nchar](40) NULL,
[MD5] [nchar](32) NULL,
[CRC32] [nchar](8) NULL,
CONSTRAINT [PK_FileHashes] PRIMARY KEY CLUSTERED 
(
[ID] ASC
)) ON {PRIMARY]

T-SQL:

代码语言:javascript
复制
select COUNT(ID) as DupCount, FileName from FileHashes
 group by [SHA-1], FileName, FileSize
 having COUNT(ID) > 1
 order by DupCount desc, FileSize desc

我离这个越来越近了,但还没到那一步:

代码语言:javascript
复制
from f in FileHashes
 group f by new { f.SHA_1, f.FileName, f.FileSize } into g
 orderby g.Key.FileSize descending
 where g.Count() > 1
 select new { g.Key.SHA_1, g.Key.FileName, g.Key.FileSize }

提前谢谢你,--Ed

EN

回答 2

Stack Overflow用户

发布于 2009-08-18 05:50:17

我相信这就是你想要的,这适用于Northwind数据库,Orders表

代码语言:javascript
复制
var orders =
      from p in Orders
      group p by new {p.CustomerID, p.ShipCity} into g
      let OrderCount = g.Count()
      orderby OrderCount descending, g.Key.ShipCity descending
      where OrderCount > 2
      select new
          { 
              CustomerID = g.Key.CustomerID, 
              City = g.Key.ShipCity, 
              NoOfOrders = g.Count() 
          };    

转置您的查询,它应该是...

代码语言:javascript
复制
var files =
      from f in FileHashes
      group f by new { f.SHA_1, f.FileName, f.FileSize } into g
      let DupCount = g.Count()
      orderby DupCount, g.Key.FileSize descending
      where DupCount > 1
      select new 
      { 
          g.Key.SHA_1, 
          g.Key.FileName, 
          g.Key.FileSize 
      };
票数 2
EN

Stack Overflow用户

发布于 2009-08-14 02:31:13

尝试:

代码语言:javascript
复制
var result = from f in FileHashes
    group by new {f.SHA-1, f.FileName, F.FileSize} into g
    orderby g.DupCount desc, g.FileSize desc
    where g.Count(ID) > 1
    select g.DupCount = g.Count(ID), g.FileName
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1275645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档