【发布时间】:2020-11-09 11:58:33
【问题描述】:
我有一个VacancyApply 表,该表由状态 ID 组成,所以我需要来自每个状态的 Top5 数据。我想获取每个状态的前 5 条记录。状态类似于 1、2、3
我的查询
var result = (from ui in _context.VacancyApply
join s in _context.UserProfile on ui.UserId equals s.UserId
join x in _context.Vacancy on ui.VacancyId equals x.VacancyId
join st in _context.Status on ui.StatusId equals st.StatusId
where ui.UserId == userId && ui.IsActive == true
orderby ui.StatusId
select new VacancyApply
{
VacancyApplyId = ui.VacancyApplyId,
VacancyId = ui.VacancyId,
UserId = ui.UserId,
StatusId = ui.StatusId,
VacancyName = x.VacancyName,
VacancyStack = x.VacancyStack,
VacancyEndDate = x.VacancyEndDate,
StatusName = st.StatusName,
UserName = s.FirstName
}).ToList();
【问题讨论】:
-
您也应该发布无法正常工作的内容。
-
@Krusty 我只想限制每个状态的前 5 名
-
result.GroupBy(x => x.StatusId).Select(x => x.Take(5).ToList()).ToList();
-
像这样:
group st by st.StatusId into groups select groups.select(s=> new VacancyApply { VacancyApplyId = ui.VacancyApplyId, //... }).Take(5)).ToList();? -
应该选择很多@jdwengspan>
标签: c# asp.net .net linq linq-to-sql