gpt4 book ai didi

c# - Linq中的链式查询

转载 作者:行者123 更新时间:2023-11-30 20:40:02 25 4
gpt4 key购买 nike

我有以下问题:

var ground = db
.Ground
.Where(g => g.RowKey == Ground_Uuid)
.ToList();

var building = db
.Building
.Where(b => ground.Any(gr => gr.RowKey == b.Ground.RowKey))
.ToList();

var floor = db
.Floor
.Where(b => building.Any(by => by.RowKey == b.Building.RowKey))
.ToList();

所以第二个依赖于第一组的 id,依此类推。当执行到第二个查询时出现以下错误:

Unable to create a constant value of type 'Domain.Model.Entities.Ground'. Only primitive types or enumeration types are supported in this context.

有什么解决办法吗?

最佳答案

您的代码的问题是 ToList 正在将结果转换为内存中的对象,而内存中的对象集合无法与数据库中的一组数据连接。

var ground = db.Ground.Where(g => g.RowKey == Ground_Uuid);
var building = db.Building.Where(b => ground.Any(gr => gr.RowKey == b.Ground.RowKey));
var floor = db.Floor.Where(b => building.Any(by => by.RowKey == b.Building.RowKey));

此外,坦率地说,在阅读@juharr 的评论后,我看到了楼层、建筑物和地面之间的关系。因为你已经在做 b.Building.RowKeyb.Ground.RowKey 预测关系很容易,我完全同意,它可以简化为:-

var floor = db.Floor.Where(b => b.Building.Ground.RowKey == Ground_Uuid);

关于c# - Linq中的链式查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33758254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com