Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在另一个LINQ查询中从一个查询排除LINQ结果_C#_Linq - Fatal编程技术网

C# 在另一个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

我有两个linq查询,查询两个不同的实体。一个实体包含所有仓库,另一个实体包含我不需要的仓库

我使用此查询获取我不需要的所有仓库:

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);