将两个IQueryable组合在一起不起作用

帕特里克·皮尔泽

我正在一个ASP.NET应用程序中,该应用程序是一个包含两个选择字段的页面。一个用于搜索选定部门的所有人员,另一个用于搜索具有给定名称(或LIKE的一部分)的人员。对于每个选择字段,我都会得到一个查询,该查询将获得同一框架实体的IQueryable对象。但是,当我尝试将IQueryable对象及其结果与Intersect结合时(由于AND-Logic),只会处理第一个查询,而不会处理第二个查询。我做错了什么?我的查询中可能有一个错误吗?

以下是查询:

第一个用于搜索选定部门人员的人员。

{SELECT 
    [Extent1].[PersonID] AS [PersonID], 
    CASE WHEN (([Extent1].[InstanceID] IS NOT NULL) AND ([Extent1].[InstanceID] IS NOT NULL)) THEN [Extent1].[InstanceID] ELSE 0 END AS [C1], 
    CASE WHEN (([Extent1].[bHidden] IS NOT NULL) AND ([Extent1].[bHidden] IS NOT NULL)) THEN [Extent1].[bHidden] ELSE cast(0 as bit) END AS [C2], 
    [Extent1].[txtLastName] AS [txtLastName], 
    [Extent1].[txtFirstName] AS [txtFirstName], 
    [Extent1].[txtEMail] AS [txtEMail], 
    [Extent1].[txtAlternativeEMail] AS [txtAlternativeEMail], 
    [Extent1].[txtGID] AS [txtGID], 
    [Extent1].[txtPhoneNumber] AS [txtPhoneNumber], 
    CASE WHEN (([Extent1].[iImportance] IS NOT NULL) AND ([Extent1].[iImportance] IS NOT NULL)) THEN [Extent1].[iImportance] ELSE 0 END AS [C3], 
    [Extent1].[Teamlead] AS [Teamlead]
    FROM (SELECT 
    [Person_Teamlead].[PersonID] AS [PersonID], 
    [Person_Teamlead].[InstanceID] AS [InstanceID], 
    [Person_Teamlead].[WiW_URL_PersonID] AS [WiW_URL_PersonID], 
    [Person_Teamlead].[txtAccount] AS [txtAccount], 
    [Person_Teamlead].[txtTitle] AS [txtTitle], 
    [Person_Teamlead].[txtLastName] AS [txtLastName], 
    [Person_Teamlead].[txtFirstName] AS [txtFirstName], 
    [Person_Teamlead].[txtPhoneNumber] AS [txtPhoneNumber], 
    [Person_Teamlead].[txtEMail] AS [txtEMail], 
    [Person_Teamlead].[txtGID] AS [txtGID], 
    [Person_Teamlead].[txtDomain] AS [txtDomain], 
    [Person_Teamlead].[txtFax] AS [txtFax], 
    [Person_Teamlead].[txtMobilePhone] AS [txtMobilePhone], 
    [Person_Teamlead].[txtRoom] AS [txtRoom], 
    [Person_Teamlead].[txtAddress] AS [txtAddress], 
    [Person_Teamlead].[dtLastUpdate] AS [dtLastUpdate], 
    [Person_Teamlead].[bHidden] AS [bHidden], 
    [Person_Teamlead].[iExtern] AS [iExtern], 
    [Person_Teamlead].[txtOrganisationUnit] AS [txtOrganisationUnit], 
    [Person_Teamlead].[txtStreet] AS [txtStreet], 
    [Person_Teamlead].[txtZip] AS [txtZip], 
    [Person_Teamlead].[txtLocalityName] AS [txtLocalityName], 
    [Person_Teamlead].[txtCountry] AS [txtCountry], 
    [Person_Teamlead].[iToDelete] AS [iToDelete], 
    [Person_Teamlead].[dtToDelete] AS [dtToDelete], 
    [Person_Teamlead].[iImportance] AS [iImportance], 
    [Person_Teamlead].[iManualInput] AS [iManualInput], 
    [Person_Teamlead].[txtAlternativeEMail] AS [txtAlternativeEMail], 
    [Person_Teamlead].[Teamlead] AS [Teamlead]
    FROM [dbo].[Person_Teamlead] AS [Person_Teamlead]) AS [Extent1]
    WHERE ( EXISTS (SELECT 
        1 AS [C1]
        FROM [dbo].[Person_Department] AS [Extent2]
        WHERE ([Extent2].[DepartmentID] = @p__linq__0) AND ([Extent2].[PersonID] = [Extent1].[PersonID])
    )) AND ([Extent1].[InstanceID] = @p__linq__1) AND (0 = [Extent1].[iToDelete]) AND ((0 = (CASE WHEN ([Extent1].[bHidden] IS NOT NULL) THEN cast(1 as bit) ELSE cast(0 as bit) END)) OR (0 = [Extent1].[bHidden]))}

第二个查询用于搜索给定名字的人。

{SELECT 
    [Project1].[PersonID] AS [PersonID], 
    [Project1].[C1] AS [C1], 
    [Project1].[C2] AS [C2], 
    [Project1].[txtLastName] AS [txtLastName], 
    [Project1].[txtFirstName] AS [txtFirstName], 
    [Project1].[txtEMail] AS [txtEMail], 
    [Project1].[txtAlternativeEMail] AS [txtAlternativeEMail], 
    [Project1].[txtGID] AS [txtGID], 
    [Project1].[txtPhoneNumber] AS [txtPhoneNumber], 
    [Project1].[C3] AS [C3], 
    [Project1].[Teamlead] AS [Teamlead]
    FROM ( SELECT 
        [Extent1].[PersonID] AS [PersonID], 
        [Extent1].[txtLastName] AS [txtLastName], 
        [Extent1].[txtFirstName] AS [txtFirstName], 
        [Extent1].[txtPhoneNumber] AS [txtPhoneNumber], 
        [Extent1].[txtEMail] AS [txtEMail], 
        [Extent1].[txtGID] AS [txtGID], 
        [Extent1].[txtAlternativeEMail] AS [txtAlternativeEMail], 
        [Extent1].[Teamlead] AS [Teamlead], 
        CASE WHEN (([Extent1].[InstanceID] IS NOT NULL) AND ([Extent1].[InstanceID] IS NOT NULL)) THEN [Extent1].[InstanceID] ELSE 0 END AS [C1], 
        CASE WHEN (([Extent1].[bHidden] IS NOT NULL) AND ([Extent1].[bHidden] IS NOT NULL)) THEN [Extent1].[bHidden] ELSE cast(0 as bit) END AS [C2], 
        CASE WHEN (([Extent1].[iImportance] IS NOT NULL) AND ([Extent1].[iImportance] IS NOT NULL)) THEN [Extent1].[iImportance] ELSE 0 END AS [C3]
        FROM (SELECT 
    [Person_Teamlead].[PersonID] AS [PersonID], 
    [Person_Teamlead].[InstanceID] AS [InstanceID], 
    [Person_Teamlead].[WiW_URL_PersonID] AS [WiW_URL_PersonID], 
    [Person_Teamlead].[txtAccount] AS [txtAccount], 
    [Person_Teamlead].[txtTitle] AS [txtTitle], 
    [Person_Teamlead].[txtLastName] AS [txtLastName], 
    [Person_Teamlead].[txtFirstName] AS [txtFirstName], 
    [Person_Teamlead].[txtPhoneNumber] AS [txtPhoneNumber], 
    [Person_Teamlead].[txtEMail] AS [txtEMail], 
    [Person_Teamlead].[txtGID] AS [txtGID], 
    [Person_Teamlead].[txtDomain] AS [txtDomain], 
    [Person_Teamlead].[txtFax] AS [txtFax], 
    [Person_Teamlead].[txtMobilePhone] AS [txtMobilePhone], 
    [Person_Teamlead].[txtRoom] AS [txtRoom], 
    [Person_Teamlead].[txtAddress] AS [txtAddress], 
    [Person_Teamlead].[dtLastUpdate] AS [dtLastUpdate], 
    [Person_Teamlead].[bHidden] AS [bHidden], 
    [Person_Teamlead].[iExtern] AS [iExtern], 
    [Person_Teamlead].[txtOrganisationUnit] AS [txtOrganisationUnit], 
    [Person_Teamlead].[txtStreet] AS [txtStreet], 
    [Person_Teamlead].[txtZip] AS [txtZip], 
    [Person_Teamlead].[txtLocalityName] AS [txtLocalityName], 
    [Person_Teamlead].[txtCountry] AS [txtCountry], 
    [Person_Teamlead].[iToDelete] AS [iToDelete], 
    [Person_Teamlead].[dtToDelete] AS [dtToDelete], 
    [Person_Teamlead].[iImportance] AS [iImportance], 
    [Person_Teamlead].[iManualInput] AS [iManualInput], 
    [Person_Teamlead].[txtAlternativeEMail] AS [txtAlternativeEMail], 
    [Person_Teamlead].[Teamlead] AS [Teamlead]
    FROM [dbo].[Person_Teamlead] AS [Person_Teamlead]) AS [Extent1]
        WHERE ([Extent1].[InstanceID] = @p__linq__0) AND (0 = [Extent1].[iToDelete]) AND ((0 = (CASE WHEN ([Extent1].[bHidden] IS NOT NULL) THEN cast(1 as bit) ELSE cast(0 as bit) END)) OR (0 = [Extent1].[bHidden])) AND ([Extent1].[txtLastName] LIKE @p__linq__1 ESCAPE N'~')
    )  AS [Project1]
    ORDER BY [Project1].[Teamlead] DESC, [Project1].[C3] DESC, [Project1].[txtLastName] ASC, [Project1].[txtFirstName] ASC}
帕特里克·皮尔泽

我找到了 小原因,大结果!我忘记将“相交”的结果设置为原始查询。我做了

query1.Intersect(query2);

代替

query1 = query1.Intersect(query2);

这就是为什么总是执行query1的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将两个 javascript 事件结合在一起不起作用

为什么将两个分别工作的JPQL查询组合在一起时不起作用?

我有两个完美运行的脚本,但是当我将它们组合在一起时它不起作用

将SVG文件与悬停组合在一起时,链接不起作用

将两个查询组合在一起以形成月份计数

将两个不同的表组合在一起进行查询

将两个或多个线程组合在一起

将两个 -filter_complex 命令组合在一起

Python 以字母开头的行,将两个 for 循环组合在一起?

如何将两个通用队列组合在一起?

如何返回将两个函数与两个参数组合在一起的函数

如何将两个SVG路径组合在一起(无空格)

Python将两个for循环组合在一起,并且不会过度重复

如何将两个具有相同键的数组组合在一起?

如何将两个SQL查询与不同的条件组合在一起?

如何将两个查询和订单数据组合在一起

Lodash或将两个对象数组与匹配键组合在一起的最佳方法

如何将两个具有不同行大小的数据框组合在一起?

两个列表整数在python中组合在一起

两个SVG组合在一起

为什么不能将两个功能组合在一起?

在SELECT中将两个列表组合在一起

将两个数据框与重复的列组合在一起

将两个字符串组合在一起

将两个数据框组合在一起

MySQL将两个结果结合在一起?

将两个输入字段的结果与JavaScript结合在一起?

将两个列表结合在一起

将两个功能结合在一起