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 显示分页

c# Linq left join 多个条件连接查询

sql中 group by 的优先级高 还是 join的优先级高?

如何在EF中实现left join查询