求助LINQ查询的一个写法

hot_yao 2011-04-22 09:53:03
显示所有的会员,会员不要重复显示,每个会员显示最近更新的3个作品
查询每个会员最近更新的3个作品显示,按能力值排序


产品表 product
字段:ProductId
UserId
UserName
Name //作品名称
LastUpdateTime //最后更新时间
用户表users


字段:UserId
UserName //用户名
AuthorLevel //能力值
...全文
1768 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xnnfan 2011-06-03
  • 打赏
  • 举报
回复
这些对新手来说,是再好不过的教材了
q107770540 2011-05-20
  • 打赏
  • 举报
回复
1. join u in users on p.UserName=u.UserName
语法错误:
join u in users on p.UserName equals u.UserName

2.order by放置地方不对
可以放到最后 用 OrderByDescending().ThenBy()来实现
kingdom_0 2011-05-20
  • 打赏
  • 举报
回复
来一个自己写的

var result=(from p in product
orderby p.LastUpdateTime descending
join u in users on p.UserName=u.UserName
select new{
UserName=p.UserName,
Name=p.Name,
LastUpdate=p.LastUpdateTime,
AuthorLevel=u.AuthorLevel }).Take(3).OrderBy(s=>s.AuthorLevel);

加菲猫看到了给我找找问题.
ryfsoft 2011-04-28
  • 打赏
  • 举报
回复
说对了

[Quote=引用 6 楼 kingdom_0 的回复:]
引用 2 楼 jiangshun 的回复:

C# code
var query = from p in product
join u in users
on p.UserId equals u.UserId
orderby p.LastUpdateTime
……
灰常好!
[/Quote]
kingdom_0 2011-04-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jiangshun 的回复:]

C# code
var query = from p in product
join u in users
on p.UserId equals u.UserId
orderby p.LastUpdateTime
……
[/Quote]灰常好!
hot_yao 2011-04-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 q107770540 的回复:]
var query=from u in Users
orderby u.AuthorLevel descending
select new
{
userId=u.UserId,
UsernName=u.UserName,
Top3productList=(from p in Product
where p.UserId==u.UserId
orde……
[/Quote]

这样的话,我在前台控件里面绑定的话,会发现不包含名为“Name”的属性
jiangshun 2011-04-22
  • 打赏
  • 举报
回复
简化一下

            var query = from p in product
orderby p.LastUpdateTime
group p by p.UserId into g
from s in g.Take(3)
join u in users
on s.UserId equals u.UserId
orderby s.UserId
select new { s, u };
q107770540 2011-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jiangshun 的回复:]

C# code
var query = from p in product
join u in users
on p.UserId equals u.UserId
orderby p.LastUpdateTime
……
[/Quote]
从楼主的描述来看 要显示所有User
所以最好还是用left join的好
jiangshun 2011-04-22
  • 打赏
  • 举报
回复
            var query = from p in product
join u in users
on p.UserId equals u.UserId
orderby p.LastUpdateTime
group new { p, u } by u.UserId into g
from s in g.Take(3)
orderby s.p.UserId
select new { s.p, s.u };
q107770540 2011-04-22
  • 打赏
  • 举报
回复
var query=from u in Users
orderby u.AuthorLevel descending
select new
{
userId=u.UserId,
UsernName=u.UserName,
Top3productList=(from p in Product
where p.UserId==u.UserId
orderby p.LastUpdateTime descending
select p.Name).Take(3)
}

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧