如何在包含数学运算的Linq查询中获取ExtrasName与ExtrasId的列表
解决Linq查询中添加ExtrasId和ExtrasName列表的需求
嘿,我明白你想要在现有Linq查询的返回结果里,同时拿到选中的配套设施(Extras)的ID和名称列表。结合你的实体模型关联关系,我们可以直接通过分组后的集合来提取这些信息,下面是修改后的完整查询:
var query = from a in _context.Cities from b in a.CityExtras where a.CityId == CityId && extraIds.Contains(b.ExtrasId) group new { a, b } by new { a.PricePerSqM, a.Name, a.CityId } into g select new { City = g.Key.Name, PricePerSqM = g.Key.PricePerSqM, TotalPrice = g.Sum(x => x.b.Price) + g.Key.PricePerSqM * squareMeter, // 添加配套设施的ID和名称列表 SelectedExtras = g.Select(x => new { ExtrasId = x.b.Extras.ExtrasId, ExtrasName = x.b.Extras.ExtrasName }).ToList() };
关键修改说明:
- 利用
CityExtras实体的Extras导航属性,我们可以直接从分组后的g集合中访问对应的Extras信息 - 通过
g.Select()提取每个关联的ExtrasId和ExtrasName,并用ToList()将其转换为列表类型,方便后续使用 - 如果你的EF Core上下文没有自动加载导航属性,建议在查询开头加上Include语句确保关联数据被正确加载:
var query = from a in _context.Cities.Include(c => c.CityExtras).ThenInclude(ce => ce.Extras) // 后续查询逻辑不变
这样修改后,查询返回的结果就会包含每个城市对应的选中配套设施的ID和名称列表啦!
内容的提问来源于stack exchange,提问作者Hareem
相关产品推荐
相关产品推荐

