您能告诉我怎么到下面的SQL代码转换的LINQ to SQL或Linq到entites的?

在正确的SQL代码是:

  

选择CollectId,URL,用户ID,pubtime   从收集组   URL,collectid,用户ID,pubtime有   pubtime> =(从选择最大值(pubtime)   收集d其中d.url = collect.url)   为了通过Collect.pubtime降序

在数据库表脚本是:

  

如果存在(来自系统对象选择*   其中id = OBJECT_ID( '[收集]')和   OBJECTPROPERTY(ID, 'IsUserTable')= 1)   DROP TABLE [收集]

     

CREATE TABLE [收集]([CollectId]   [INT] IDENTITY(1,1)NOT NULL,   [URL] [nvarchar的](200)NULL,[用户Id]   [为nvarchar(50)NULL,[PubTime]   [日期时间] NULL)

     

ALTER TABLE [收集] WITH NOCHECK ADD   约束[PK_Collect] PRIMARY KEY   NONCLUSTERED([CollectId])SET   IDENTITY_INSERT [收集] ON

     

INSERT [收集]   ([CollectId],[地址],[用户ID],[PubTime])   VALUES(   1, 'www.sohu.com', '迈克','2008-10-10   0' 点00分00秒)INSERT [收集]   ([CollectId],[地址],[用户ID],[PubTime])   VALUES(   2, 'www.echina365.com', '百合','2008-10-15   0' 点00分00秒)INSERT [收集]   ([CollectId],[地址],[用户ID],[PubTime])   VALUES(   3, 'www.php.com', '汤姆','2008-10-20   0' 点00分00秒)INSERT [收集]   ([CollectId],[地址],[用户ID],[PubTime])   VALUES(   如图4所示, 'www.echina365.com', '姚明','2008-10-23   0' 点00分00秒)INSERT [收集]   ([CollectId],[地址],[用户ID],[PubTime])   VALUES(   5, 'www.echina365.com', '迈克','2008-10-25   0' 点00分00秒)INSERT [收集]   ([CollectId],[地址],[用户ID],[PubTime])   VALUES(   6, 'www.sohu.com', '杰克',“2008-10-26   0' 点00分00秒)INSERT [收集]   ([CollectId],[地址],[用户ID],[PubTime])   VALUES(   7, 'www.echina365.com', '崔西','2008-11-2   0' 点00分00秒)INSERT [收集]   ([CollectId],[地址],[用户ID],[PubTime])   VALUES(   8, 'www.php.com', '姚明','2008-11-5   0' 点00分00秒)

     

SET IDENTITY_INSERT [收集] OFF

有帮助吗?

解决方案

由于您的“具有”条件是不实际的聚合列,不能你只需要使用“where”子句?

select distinct CollectId, url, userid, pubtime
from Collect
where pubtime >= (select max(pubtime) from collect d where d.url = collect.url)
order by Collect.pubtime desc

这得到给您提供的数据集相同的结果。然后将LINQ语句变得相当简单:

var rows = (from c in Collect
where c.PubTime >= (
    from d in Collect
    where d.Url == c.Url
    select d.PubTime).Max()
orderby c.PubTime descending
select c).Distinct();

我可以尽管误解你的意图。也许我的查询的版本没有做的正是你想要的。如果是这样,给我留下了评论,我会删除了答案,以免混淆问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top