You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在父子关系模型中,已知选中WeekID,如何单查询获取同年度所有周记录?

解决方案:单查询获取选中周同年度的所有周

嗨,我来帮你搞定这个单查询的需求!你完全不用先单独查YearID,直接通过一次Linq查询就能实现,下面给你两种实用的写法:

方法一:使用子查询

这种思路是先通过选中的WeekID定位到对应的YearID,再筛选出该年度的所有周,整个逻辑在一次数据库查询里完成:

// 一次性获取同年度所有周数据
var sameYearWeeks = db.Weeks
    .Where(w => w.YearID == db.Weeks
        .Where(selected => selected.WeekID == model.WeekSelected)
        .Select(selected => selected.YearID)
        .FirstOrDefault())
    .ToList();

// 转换成SelectList用于页面绑定
model.WeekList = new SelectList(sameYearWeeks, "WeekID", "Name");

方法二:使用自连接

把Weeks表和自身做关联,通过YearID匹配选中周所在的年度,同样是单次数据库查询:

var sameYearWeeks = from week in db.Weeks
                    join selectedWeek in db.Weeks on week.YearID equals selectedWeek.YearID
                    where selectedWeek.WeekID == model.WeekSelected
                    select week;

model.WeekList = new SelectList(sameYearWeeks.ToList(), "WeekID", "Name");

小提醒

  • 两种写法最终都会生成单次SQL查询,不会多次访问数据库,完全满足你的需求。
  • 如果业务场景中存在model.WeekSelected无效(比如没有对应Week记录)的情况,可以在查询后加个空值判断,避免后续绑定出问题。

内容的提问来源于stack exchange,提问作者Juan Carlos Oropeza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:28:26