C# 在另一个LINQ查询中从一个查询排除LINQ结果
我有两个linq查询,查询两个不同的实体。一个实体包含所有仓库,另一个实体包含我不需要的仓库 我使用此查询获取我不需要的所有仓库:C# 在另一个LINQ查询中从一个查询排除LINQ结果,c#,linq,C#,Linq,我有两个linq查询,查询两个不同的实体。一个实体包含所有仓库,另一个实体包含我不需要的仓库 我使用此查询获取我不需要的所有仓库: var sysproWarehouses = from i in sysproSession.Query<InvWarehouse>() group i by i.Warehouse into g
var sysproWarehouses = from i in sysproSession.Query<InvWarehouse>()
group i by i.Warehouse
into g
select new
{
g.Key
};
var sysproWarehouses=来自sysproSession.Query()中的i
第一组由一个仓库组成
进入g
选择新的
{
g、 钥匙
};
这是我想要从中获取我确实需要的所有仓库的查询:
var stockEvaluation = from ib in mapicsSession.Query<ItemBalance>()
where //I guess it needs to be done here
orderby w.Description
group ib by w.Description
into g
select new
{
Warehouse = g.Key,
};
var stockEvaluation=来自MapicSession.Query()中的ib
我想应该在这里完成
订货人w.说明
按w.描述划分的ib组
进入g
选择新的
{
仓库=总钥匙,
};
基本上,我只需要从第二个查询中排除第一个查询结果。我很抱歉,如果这是一个简单的问题,但我是一个初学者,所以。。。谢谢大家! 我想您需要一个
,除了
,但是在调用之后选择
,因为您的两个列表来自不同的表。大概是这样的:
var stockEvaluation = (from ib in mapicsSession.Query<ItemBalance>()
orderby w.Description
group ib by w.Description
into g
select new
{
g.Key,
}).Except(sysproWarehouses);
var stockEvaluation=(来自MapicSession.Query()中的ib)
订货人w.说明
按w.描述划分的ib组
进入g
选择新的
{
g、 钥匙,
}).除(sysproWarehouses)外;
请注意,我还更改了匿名类型中的唯一成员,以匹配第一次查询中的类型。您可以使用LINQ方法
Except()
请参见以下内容:
var sysproWarehouses = from i in sysproSession.Query<InvWarehouse>()
group i by i.Warehouse
into g
select new
{
g.Key
};
var stockEvaluation = from ib in mapicsSession.Query<ItemBalance>()
orderby w.Description
group ib by w.Description
into g
select new
{
g.Key,
};
注意:-结果包含排除的项目请查看
Except
功能。它正是你想要的。在哪里!sysproWarehouses.Any(此处为您的测试)或cramopy所说的内容。因此,您可以在现有查询中添加一个where
子句,并在此where中检查!sysproWarehouses.Contains()
函数。其他信息:看起来您希望对这两个集合执行差异。看看EF提供的Except功能。下面的链接包含了一个很好的解释:此解决方案基于@cramopy建议。我发现此错误=“string”不包含的定义,并且最佳扩展方法重载需要类型为
的接收器。我是否缺少一个使用指令或什么?似乎我不能使用Except()方法。您需要对两个列表使用相同的类型。我已将select语句编辑为仅返回键。我已经更新了我的答案。请看一下。谢谢@朱迪思·朱伯特,如果这种方法对你有效,你能投票表决吗?谢谢,只要我再重复两次。我是新来的。保证我会好的!是否将except转换为SQL?我在@HimBromBeere得到以下错误:'string'不包含的定义,并且最佳扩展方法重载需要类型为
的接收器,如果没有说明如何使用,您的答案(如果有的话)不是很有帮助。
var result = stockEvaluation.Except(sysproWarehouses);