C# 在单个LINQ上使用外键分组
我有两个相关的表,它们是 时间表C# 在单个LINQ上使用外键分组,c#,sql,entity-framework,linq,C#,Sql,Entity Framework,Linq,我有两个相关的表,它们是 时间表 SlotId Description Amount 和插槽 Id Name 示例数据: 时间表 slotid description amount -------------------------------- 1 Morning charge 300 1 Late fee 300 1 Earlier bonus 200 1 Half day
SlotId
Description
Amount
和插槽
Id
Name
示例数据:
时间表
slotid description amount
--------------------------------
1 Morning charge 300
1 Late fee 300
1 Earlier bonus 200
1 Half day 150
2 Morning charge 300
2 Late fee 300
2 Earlier bonus 200
2 Half day 150
3 Morning charge 300
3 Late fee 300
3 Earlier bonus 200
3 Half day 150
最终结果需要作为SlotSchedules
列表,如下所示:
SlotId
SlotName
List<Schedules>
SlotId
SlotName
列表
我需要:
- 获取的时间表列表
- 然后在其中找到不同的插槽
- 然后遍历每个插槽,构建我需要的模型,如下所示
List<Schedules> schedulesAll = (from n in dbContext.Schedules
select n).ToList();
var slotsdistinct = schedulesAll.Select(x => x.SlotId).Distinct().ToList();
foreach (var slot in slotsdistinct)
{
var scheduledforslot = schedulesAll.Where(x => x.SlotId == slot).Select(x => x).ToList();
foreach (Schedules _schedule in scheduledforslot)
{
//ListModel.Add(new DetailsModel { Name = _schedule.Description, Amount = (_schedule.Amount });
}
}
List schedulesAll=(从dbContext.Schedules中的n开始)
选择n.ToList();
var slotsdinct=schedulesAll.Select(x=>x.SlotId.Distinct().ToList();
foreach(插槽中的var插槽)
{
var scheduledforslot=schedulesAll.Where(x=>x.SlotId==slot);
foreach(进度表(scheduledforslot中的进度表)
{
//Add(新的DetailsModel{Name=_schedule.Description,Amount=(_schedule.Amount});
}
}
有没有办法在单个LINQ查询中实现它?试试以下方法:
var slotsSchedules = dbContext.Slots.ToList().Select(slot => new {
SlotID = slot.Id,
Name = slot.Name,
SlotSchedules = dbContext.Schedules.ToList()
.Where(schedule = > schedule.SlotId == slot.Id).ToList()});
告诉我们您在C中尝试了什么,然后我们将与您一起修复:)@CodeNotFound请查看编辑您在代码中仅使用
计划表
表,是否足够?您不想加入表吗?它们通过外键slotid关联