Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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条件在哪里不工作_C#_Linq_Linq To Entities - Fatal编程技术网

C# Linq条件在哪里不工作

C# Linq条件在哪里不工作,c#,linq,linq-to-entities,C#,Linq,Linq To Entities,以下内容未在SQL中生成where子句 当我调试时正在执行搜索,但在SQL profiler中查看时不显示 using (var db = new CERTContext()) { var search = db.Project.Include("ValueStream").Include("Function").AsQueryable(); if (!lookForDate) { search.Where(p => p.ProjectName.Co

以下内容未在SQL中生成where子句

当我调试时正在执行搜索,但在SQL profiler中查看时不显示

using (var db = new CERTContext())
{
    var search = db.Project.Include("ValueStream").Include("Function").AsQueryable();
    if (!lookForDate)
    {
        search.Where(p => p.ProjectName.Contains(searchText) ||
                          p.ProjectDescription.Contains(searchText) ||
                          p.EquipmentName.Contains(searchText) ||
                          p.ValueStream.Description.Contains(searchText) || 
                          p.ValueStream.Description.Contains(searchText) ||
                          p.TrackingId.Contains(searchText) ||
                          p.ENumber.Contains(searchText) ||
                          p.ShamrockNumber.Contains(searchText));

        //.Take(10)
        //.OrderByDescending(p => p.ProjectID);
        //.ToList();
    }
    else
    {// Search on date
        search.Where(p =>
        (System.Data.Objects.EntityFunctions.TruncateTime(p.StartDate) == searchDate));
        //.Take(10)
        //.OrderByDescending(p => p.ProjectID);
        //.ToList();
    }                              
    if (showDeleted != true)
    {
        search.Where(p => p.Deleted == false);
    }
    pList = search.Take(10).OrderByDescending(p => p.ProjectID).ToList();

}// using (var db = new CERTContext())
这就是我得到的。 它有select top 10、orderby和JOIN,但没有where

SELECT 
[Limit1].[ProjectID] AS [ProjectID], 
[Limit1].[FunctionId] AS [FunctionId], 
[Limit1].[ValueStreamId] AS [ValueStreamId], 
[Limit1].[TrackingId] AS [TrackingId], 
[Limit1].[VersionNo] AS [VersionNo], 
[Limit1].[VersionDate] AS [VersionDate], 
[Limit1].[ProjectName] AS [ProjectName], 
[Limit1].[Deleted] AS [Deleted], 
[Limit1].[Closed] AS [Closed], 
[Limit1].[ProjectLead] AS [ProjectLead], 
[Limit1].[ProjectDescription] AS [ProjectDescription], 
[Limit1].[StartDate] AS [StartDate], 
[Limit1].[CurrentPhase] AS [CurrentPhase], 
[Limit1].[ENumber] AS [ENumber], 
[Limit1].[ShamrockNumber] AS [ShamrockNumber], 
[Limit1].[EquipmentName] AS [EquipmentName], 
[Limit1].[ConceptExpectedEndDate] AS [ConceptExpectedEndDate], 
[Limit1].[PlanningExpectedEndDate] AS [PlanningExpectedEndDate], 
[Limit1].[DesignExpectedEndDate] AS [DesignExpectedEndDate], 
[Limit1].[InstallExpectedEndDate] AS [InstallExpectedEndDate], 
[Limit1].[DeployExpectedEndDate] AS [DeployExpectedEndDate], 
[Limit1].[ConceptActualEndDate] AS [ConceptActualEndDate], 
[Limit1].[PlanningActualEndDate] AS [PlanningActualEndDate], 
[Limit1].[DesignActualEndDate] AS [DesignActualEndDate], 
[Limit1].[InstallActualEndDate] AS [InstallActualEndDate], 
[Limit1].[DeployActualEndDate] AS [DeployActualEndDate], 
[Limit1].[ScalingQ1Text] AS [ScalingQ1Text], 
[Limit1].[ScalingQ2Text] AS [ScalingQ2Text], 
[Limit1].[ScalingQ3Text] AS [ScalingQ3Text], 
[Limit1].[ScalingQ1Answer] AS [ScalingQ1Answer], 
[Limit1].[ScalingQ2Answer] AS [ScalingQ2Answer], 
[Limit1].[ScalingQ3Answer] AS [ScalingQ3Answer], 
[Limit1].[ScalingNotes] AS [ScalingNotes], 
[Limit1].[CreateUserName] AS [CreateUserName], 
[Limit1].[LastUserName] AS [LastUserName], 
[Limit1].[CreatedDate] AS [CreatedDate], 
[Limit1].[EditedDate] AS [EditedDate], 
[Extent2].[ValueStreamId] AS [ValueStreamId1], 
[Extent2].[Description] AS [Description], 
[Extent3].[FunctionID] AS [FunctionId1], 
[Extent3].[Description] AS [Description1]
FROM    (SELECT TOP (10) [c].[ProjectID] AS [ProjectID], [c].[FunctionId] AS [FunctionId], [c].[ValueStreamId] AS [ValueStreamId], [c].[TrackingId] AS [TrackingId], [c].[VersionNo] AS [VersionNo], [c].[VersionDate] AS [VersionDate], [c].[ProjectName] AS [ProjectName], [c].[Deleted] AS [Deleted], [c].[Closed] AS [Closed], [c].[ProjectLead] AS [ProjectLead], [c].[ProjectDescription] AS [ProjectDescription], [c].[StartDate] AS [StartDate], [c].[CurrentPhase] AS [CurrentPhase], [c].[ENumber] AS [ENumber], [c].[ShamrockNumber] AS [ShamrockNumber], [c].[EquipmentName] AS [EquipmentName], [c].[ConceptExpectedEndDate] AS [ConceptExpectedEndDate], [c].[PlanningExpectedEndDate] AS [PlanningExpectedEndDate], [c].[DesignExpectedEndDate] AS [DesignExpectedEndDate], [c].[InstallExpectedEndDate] AS [InstallExpectedEndDate], [c].[DeployExpectedEndDate] AS [DeployExpectedEndDate], [c].[ConceptActualEndDate] AS [ConceptActualEndDate], [c].[PlanningActualEndDate] AS [PlanningActualEndDate], [c].[DesignActualEndDate] AS [DesignActualEndDate], [c].[InstallActualEndDate] AS [InstallActualEndDate], [c].[DeployActualEndDate] AS [DeployActualEndDate], [c].[ScalingQ1Text] AS [ScalingQ1Text], [c].[ScalingQ2Text] AS [ScalingQ2Text], [c].[ScalingQ3Text] AS [ScalingQ3Text], [c].[ScalingQ1Answer] AS [ScalingQ1Answer], [c].[ScalingQ2Answer] AS [ScalingQ2Answer], [c].[ScalingQ3Answer] AS [ScalingQ3Answer], [c].[ScalingNotes] AS [ScalingNotes], [c].[CreateUserName] AS [CreateUserName], [c].[LastUserName] AS [LastUserName], [c].[CreatedDate] AS [CreatedDate], [c].[EditedDate] AS [EditedDate]
    FROM [dbo].[Projects] AS [c] ) AS [Limit1]
LEFT OUTER JOIN [dbo].[ValueStreams] AS [Extent2] ON [Limit1].[ValueStreamId] = [Extent2].[ValueStreamId]
LEFT OUTER JOIN [dbo].[Functions] AS [Extent3] ON [Limit1].[FunctionId] = [Extent3].[FunctionID]
ORDER BY [Limit1].[ProjectID] DESC
仅仅调用Where不会改变您调用它的查询的任何内容。相反,它返回一个新查询。。。你现在忽略了。你想要:

search = search.Where(/* code as before */);
编辑:然后还需要将声明更改为:

IQueryable<Project> search = db.Project.(code as before)

我希望使用AsQueryable时,不需要这样做,但显然需要这样做。

将结果搜索放在后面的搜索位置,如下所示:

search = search.Where( // same with your code

从查询返回的结果已丢失。您需要将其分配回搜索变量。

当我尝试search=search时。其中p=>p.Deleted==false;我得到:无法将类型“System.Linq.IQueryable”隐式转换为“System.Data.Entity.Infrastructure.DbQuery”。存在显式转换是否缺少转换?C:\Users\eotuathaigh\Documents\SourceCode\BSCI\DFxCERT\DFxCERT\Services\ProjectServices.cs 286 38DFxCERT@Eamon:好的,您需要更改变量声明。我会把它编辑到我的帖子里。对不起,乔恩,我一定是在某个阶段取消了asQueryable,因为它也在工作。var search=db.Project.IncludeValueStream.IncludeFunction.AsQueryable@伊蒙:是的,这正是我所期望的。我在写我的第一个答案时故意检查了AsQueryable,以防万一。。。