Linq join and count 给我一个错误...不知道为啥 c#
Posted
技术标签:
【中文标题】Linq join and count 给我一个错误...不知道为啥 c#【英文标题】:Linq join and count gives me an error... don't know why c#Linq join and count 给我一个错误...不知道为什么 c# 【发布时间】:2018-05-27 09:18:31 【问题描述】:我正在使用 asp.net 网络表单 4.5
我正在尝试将两个表产品和批次通过
var query = _cc.products.Join(_db.lots,
p => p.parentLotIndex,
l => l.idx,
(p, l) => new P = p, L = l);
int prodCount = query.Count();
编辑:这是多对一的关系。也就是说,可能有数 与单个批次相关的产品。所以查询是要查找多少个产品 在给定的批次中。
但这给了我一个奇怪的错误,比如..
NotSupportedException was unhandled by user code.
The specified LINQ expression contains references to queries that are associated with different contexts.
我不知道这意味着什么。 请有人帮助我吗? 提前致谢。
PS : 顺便说一下,执行 sql 查询 SQL管理工作室给了我正确的答案.. 使用标准 sql 查询.. 所以我想我在 linq 上做错了。
【问题讨论】:
你用谷歌搜索了吗?也许它不相关但是:***.com/questions/7332920/… 您没有可以使用的 Navigation 属性吗?此外,如果它是一对一的关系,那么为什么需要加入?还是实际上是 1 对 0 或 1 的关系? @juharr 好点。我想我不熟悉这些命名,所以无法制造产品,所以我试图找出答案,所以我想这将是 0 对 1 的关系,我正在尝试计算制造的产品 如果您希望所有产品都有很多,那么这样的事情可能会起作用(猜测您的导航属性名称)_db.products.Where(p => p.Lot != null).Select(p => new P = p, L = p.Lot)
。
@Nekeniehl 当然我用谷歌搜索了它。 tolist 或 toarray 不再起作用,显示相同的错误。有趣的是,当我放入 toarray 或 tolist 时,异常来自 sql 查询,而不是计数。
【参考方案1】:
您的代码中有 2(!!!) 上下文:
_cc.products
_db.lots
还有错误信息告诉你。
【讨论】:
以上是关于Linq join and count 给我一个错误...不知道为啥 c#的主要内容,如果未能解决你的问题,请参考以下文章
c# linq with group by and join 抛出异常
EF Linq to Sql 多表left join查询并对结果group by分组之后进行count,max等处理
PagedList 使用 LINQ Skip and Take,但使用 Count of results 显示分页