C# IEnumerable项消失-存在于DAL中,但不存在调用者

C# IEnumerable项消失-存在于DAL中,但不存在调用者,c#,linq,entity-framework,ienumerable,iqueryable,C#,Linq,Entity Framework,Ienumerable,Iqueryable,我有一个用于检索项的DAL方法。这些项存在于DAL方法中,但不存在于调用代码中。这怎么可能 呼叫代码: IEnumerable<InstallationSummary> installationSummaryList = InstallationSummaryLogic.GetByServerAppAndGroup(appServer, appWithValidGroup); public static IEnumerable<InstallationSummary&

我有一个用于检索项的DAL方法。这些项存在于DAL方法中,但不存在于调用代码中。这怎么可能

呼叫代码:

IEnumerable<InstallationSummary> installationSummaryList =
InstallationSummaryLogic.GetByServerAppAndGroup(appServer, appWithValidGroup);
    public static IEnumerable<InstallationSummary> GetByServerAppAndGroup(ApplicationServer appServer, ApplicationWithOverrideVariableGroup appWithGroup)
    {
        return DataAccessFactory.GetDataInterface<IInstallationSummaryData>().GetByServerAppAndGroup(appServer, appWithGroup);
    }
IEnumerable installationSummaryList=
InstallationSummaryLogic.GetByServerAppAndGroup(appServer,appWithValidGroup);
显示项目确实存在的DAL方法:

IEnumerable<InstallationSummary> installationSummaryList =
InstallationSummaryLogic.GetByServerAppAndGroup(appServer, appWithValidGroup);
    public static IEnumerable<InstallationSummary> GetByServerAppAndGroup(ApplicationServer appServer, ApplicationWithOverrideVariableGroup appWithGroup)
    {
        return DataAccessFactory.GetDataInterface<IInstallationSummaryData>().GetByServerAppAndGroup(appServer, appWithGroup);
    }

调用代码,不显示任何项目。他们去了哪里?
(这与问题顶部显示的行相同。)

DAL方法和调用代码之间的唯一区别是一个简单的传递逻辑类。为了完整起见,我将其包括在这里:

IEnumerable<InstallationSummary> installationSummaryList =
InstallationSummaryLogic.GetByServerAppAndGroup(appServer, appWithValidGroup);
    public static IEnumerable<InstallationSummary> GetByServerAppAndGroup(ApplicationServer appServer, ApplicationWithOverrideVariableGroup appWithGroup)
    {
        return DataAccessFactory.GetDataInterface<IInstallationSummaryData>().GetByServerAppAndGroup(appServer, appWithGroup);
    }
公共静态IEnumerable GetByServerAppAndGroup(ApplicationServer appServer,ApplicationWithOverrideVariableGroup appWithGroup)
{
返回DataAccessFactory.GetDataInterface().GetByServerAppAndGroup(appServer,appWithGroup);
}
编辑-显示整个DAL方法

public IEnumerable<InstallationSummary> GetByServerAppAndGroup(ApplicationServer appServer, ApplicationWithOverrideVariableGroup appWithGroup)
{
    IQueryable<InstallationSummary> summaries = this.Database.InstallationSummaries
        .Include(x => x.ApplicationServer)
        .Include(x => x.ApplicationWithOverrideVariableGroup.Application)
        .Include(x => x.ApplicationWithOverrideVariableGroup.CustomVariableGroup)
        .Where(x => x.ApplicationServer.IdForEf == appServer.IdForEf)
        .Where(x => x.ApplicationWithOverrideVariableGroup.Application.IdForEf == appWithGroup.Application.IdForEf);

    if (appWithGroup.CustomVariableGroup == null)
    {
        return summaries.Where(x => x.ApplicationWithOverrideVariableGroup.CustomVariableGroup == null);
    }

    return summaries
        .Where(x =>
        x.ApplicationWithOverrideVariableGroup != null &&
        x.ApplicationWithOverrideVariableGroup.CustomVariableGroup != null &&
        x.ApplicationWithOverrideVariableGroup.CustomVariableGroup.IdForEf == appWithGroup.CustomVariableGroup.IdForEf);
}
public IEnumerable GetByServerAppAndGroup(ApplicationServer appServer,ApplicationWithOverrideVariableGroup appWithGroup)
{
IQueryable summaries=this.Database.InstallationSummaries
.Include(x=>x.ApplicationServer)
.Include(x=>x.ApplicationWithOverrideVariableGroup.Application)
.Include(x=>x.ApplicationWithOverrideVariableGroup.CustomVariableGroup)
.Where(x=>x.ApplicationServer.IdForEf==appServer.IdForEf)
其中(x=>x.ApplicationWithOverrideVariableGroup.Application.IdForEf==appWithGroup.Application.IdForEf);
如果(appWithGroup.CustomVariableGroup==null)
{
返回摘要。其中(x=>x.ApplicationWithOverrideVariableGroup.CustomVariableGroup==null);
}
报税表摘要
.其中(x=>
x、 ApplicationWithOverrideVariableGroup!=null&&
x、 ApplicationWithOverrideVariableGroup.CustomVariableGroup!=null&&
x、 ApplicationWithOverrideVariableGroup.CustomVariableGroup.IdForEf==appWithGroup.CustomVariableGroup.IdForEf);
}

您的
GetByServerAppAndGroup
方法使用
Where
调用过滤
摘要
(我们看不出它到底是什么-如果您剪切并粘贴该方法本身,这将很有帮助)。我的猜测是,
摘要
中的任何结果都不会通过
Where
调用中的过滤器。

延迟执行是否也有问题?在他的代码中,我们会在什么时候看到实际的LINQ查询被执行?他可能认为DAL有代码,因为当他询问他的集合时,调试器正在为他枚举查询。@BradRem,如果在调试器中展开“结果”视图,它应该执行查询。我将DAL代码添加到问题中。然而,如果你注意到在截图中,我已经在返回语句中点击了F10。请注意,结束方法大括号高亮显示。这意味着已应用Where筛选器。@BobHorn:但您正在显示
摘要的内容。
Where
子句不会影响它-过滤
Where
的返回值,但它根本不会更改源。我的坏消息。让我先在变量中捕获它,然后返回它。然后我可以检查它是否真的是Where条款。