首页新闻找找看学习计划

求一条LINQ to Entities 查询语句

0
悬赏园豆:20 [已关闭问题] 关闭于 2015-10-09 16:21

消息表:id pId userId Open topId Layer message Subscribers CreatedTime UpdateTime
消息接收到: id messageId userId messageRecipientType

说明:

消息表字段说明:
id (guid) 唯一主键
iId(guid) 上级消息
userId(guid) 消息的发送者用户Id
open(bool) 公开或私密
messageType(枚举) 项目、任务、小组、用户
topId(string) 表示当前消息树的最上层消息ID,如果当前消息就是最上层则留空
leyer(int) 当前消息在消息树中的深数(也可以理解为第几代)
message(string) 消息内容
subscribers(string) 消息订阅者列表,为公开消息指定订阅者(用英文逗号分隔开)
CreatedTime(datetime) 消息发布时间
UpdatedTime(datetime) 表示当前消息树的更新时间(消息本身不能修改,当消息有新回复时更新整个消息树的更新时间)

消息接收者表字段说明:
id(guid) 唯一主键
messageId 所属消息Id
userId(guid) 消息接收人Id
messageRecipientType(枚举) @我的,回复我的,公开的(该公开是在messageType值范围内公开)

 

现在要求用 LINQ to Entities 查询出与我相关的最近更新的20颗消息树(tree)?

注意:

1.消息是Tree树型,有上下级关系
2.消息分为公开或私有
3.公开消息不会通知到具体的接收人,也就不会写入数据到消息接收表
4.私有消息会通知到每位接收人,messageRecipientType字段表示消息与接收者之间的关系
5.与我相关的消息包含我发送的(消息表UserId)、我订阅的(消息表subscribers)、和我接收的(消息接收者UserId && (@我的,回复我的))。

难点:我发送的、我订阅的消息可以在本表查询,但我接收的消息需要联表查询。不联表就取不出我接收的消息,联表(Join)又会造成一条消息出现多次(我发送的消息有多个接收人时联表查询该消息就会有多条)。

Adming的主页 Adming | 初学一级 | 园豆:12
提问于:2015-07-21 15:19
< >
分享
所有回答(2)
0

Entitys.OrderByDescending(e=> oi.UpdatedTime).Take(20);

 

不谢

流星霜紫 | 园豆:473 (菜鸟二级) | 2015-07-21 16:51

sorry  刚才问错了,不是取最近20条,是取与我相关的20条。

支持(0) 反对(0) Adming | 园豆:12 (初学一级) | 2015-07-21 17:00

@Adming: 那就用userId匹配自己嘛 =。=  加个Where 就好了 

支持(0) 反对(0) 流星霜紫 | 园豆:473 (菜鸟二级) | 2015-07-21 17:01

@流星霜紫: 这么简单我就不在这儿提问了 

支持(0) 反对(0) Adming | 园豆:12 (初学一级) | 2015-07-21 17:03

@Adming: Entitys.OrderByDescending(e=> oi.UpdatedTime).Where(oi => oi.userId== “自己的ID”).Take(20);

支持(0) 反对(0) 流星霜紫 | 园豆:473 (菜鸟二级) | 2015-07-21 17:03

@Adming: 还是说 你要 表的连接?

支持(0) 反对(0) 流星霜紫 | 园豆:473 (菜鸟二级) | 2015-07-21 17:05

@流星霜紫: 我修改了问题,你自己看下 

支持(0) 反对(0) Adming | 园豆:12 (初学一级) | 2015-07-21 17:10
0

你现在的目的是做一个查询还是做一个统计?你要的是条数还是详细?

_Vegetables | 园豆:566 (小虾三级) | 2015-07-22 08:58

取当前与我相关的消息详情

支持(0) 反对(0) Adming | 园豆:12 (初学一级) | 2015-07-22 09:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册