首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将SQL代码“具有”条件转换为LinqToSQL或LinqToEntites?

如何将SQL代码“具有”条件转换为LinqToSQL或LinqToEntites?
EN

Stack Overflow用户
提问于 2008-11-26 05:06:50
回答 1查看 1K关注 0票数 0

您能告诉我如何将以下SQL代码转换成SQL或Linq到Entites吗?

正确的SQL代码是:

从收集组中选择CollectId、url、userid、公共时间(通过Collect.pubtime从收集d中选择d.url = collect.url )。

数据库表脚本是:

如果存在

(从sysobjects选择*,其中id =OBJECT_ID( 'IsUserTable')和OBJECTPROPERTY(id,‘IsUserTable’)= 1)

创建表Collect

使用NOCHECK添加约束PK_Collect主键的ALTER收集( CollectId )集IDENTITY_INSERT收集

插入Collect值( 1,'www.sohu.com','Mike','2008-10-10 :00:00‘)插入Collect值( 2,'www.echina365.com',’莉莉‘,’2008-10-150:00:00‘)插入Collect值( 3,'www.php.com',’Collect‘,’08-10-20:00:00‘)插入Collect值( 4,插入Collect值( 5,www.echina365.com,'Mike',‘2008-10-250:00:00’)插入Collect值( 6,'www.sohu.com','Jack','2008-10-26 0:00:00')插入Collect值( 7,'www.echina365.com','Tracy',)插入Collect值( 8,'www.php.com','YaoMing','2008-11-5 :00:00‘)

设置IDENTITY_INSERT从收集

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2008-11-26 05:21:08

因为您的“有”条件实际上不在聚合列上,所以不能只使用"where“子句吗?

代码语言:javascript
复制
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语句变得相当简单:

代码语言:javascript
复制
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();

不过,我可能误解了你的意图。也许我的查询版本没有完全按照您的要求执行。如果是这样,请给我留下评论,我会删除答案,以免混淆问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/319800

复制
相关文章

相似问题

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