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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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
Linq PredicateBuilder未返回结果_Linq_Silverlight 4.0_Predicatebuilder - Fatal编程技术网

Linq PredicateBuilder未返回结果

Linq PredicateBuilder未返回结果,linq,silverlight-4.0,predicatebuilder,Linq,Silverlight 4.0,Predicatebuilder,我仍在学习Linq,但希望有人能帮助我确定为什么使用PredicateBuilder(gOrderCount always==0)的以下方法没有得到任何结果,非常感谢您的帮助: public IQueryable<TrackingInfo> GetTrackingAllOrders(string custName, string supplier, string assigned) { var predicate = PredicateBuilder.Fals

我仍在学习Linq,但希望有人能帮助我确定为什么使用PredicateBuilder(gOrderCount always==0)的以下方法没有得到任何结果,非常感谢您的帮助:

public IQueryable<TrackingInfo> GetTrackingAllOrders(string custName, string supplier, string assigned)
    {
        var predicate = PredicateBuilder.False<TrackingInfo>();

        if (custName != null && custName != String.Empty)
        {
            predicate = predicate.And(c => c.CustomerName.Contains(custName));
        }
        if (supplier != null && supplier != String.Empty)
        {
            predicate = predicate.And(c => c.Supplier.Contains(supplier));
        }
        if (assigned != null && assigned != String.Empty)
        {
            predicate = predicate.And(c => c.AssignedTo.Contains(assigned));
        }

         IQueryable<TrackingInfo> oList = null;

        using (var ctx = new OMS_ISSEntities())
        {
            oList = (from c in ctx.GetSSISTrackingInfoFuction()
                     orderby c.OrderID descending
                     select new TrackingInfo
                     {
                         OrderID = c.OrderID,
                         CustomerName = c.CustomerName ?? String.Empty,
                         ClientServiceID = c.ClientServiceID ?? String.Empty,
                         SiteName = c.SiteName ?? String.Empty,
                         SiteStatus = c.SiteStatus ?? String.Empty,
                         IPNETWCount = c.IPNETWCount ?? 0,
                         VOIPCount = c.VOIPCount ?? 0,
                         AirCardCount = c.AirCardCount ?? 0,
                         TicketProductType = c.TicketProductType ?? String.Empty,
                         SiteAddress = c.SiteAddress ?? String.Empty,
                         LCONPhone = c.LCONPhone ?? String.Empty,
                         Supplier = c.Supplier ?? String.Empty,
                         SupplierOrderNumber = c.SupplierOrderNumber ?? String.Empty,
                         ConfFOCDate = c.ConfFOCDate,
                         DSLNumber = c.DSLNumber ?? String.Empty,
                         DSLLineType = c.DSLLineType ?? String.Empty,
                         JournalNote = c.JournalNote ?? String.Empty,
                         JournalLastUpdate = c.JournalLastUpdate,
                         Project = c.Project ?? String.Empty,
                         SiteICB = c.SiteICB,
                         SiteISSDueDate = c.SiteISSDueDate,
                         SiteISSInfo = c.SiteISSInfo ?? String.Empty,
                         AssignedTo = c.AssignedTo ?? String.Empty,
                         SiteSubmitDate = c.SiteSubmitDate,
                         SiteID = c.SiteID ?? String.Empty,
                         UserLogin = c.UserLogin ?? String.Empty,
                         ClientSiteType = c.ClientSiteType ?? String.Empty,
                         OpenJeop_Supp = c.OpenJeop_Supp,
                         PastDueFOC = c.PastDueFOC,
                         DaysSinceLastJNUpdate = c.DaysSinceLastJNUpdate,
                         SiteStatusID = c.SiteStatusID,
                         AssignedToID = c.AssignedToID,
                         SupplierID = c.SupplierID,
                         MasterCustID = c.MasterCustID,
                         MaxJeopSuppDate = c.MaxJeopSuppDate,
                         EstimatedTTU = c.Sit_EstTTU
                     }).ToList().AsQueryable().Where(predicate);

            gOrderCount = oList.Count();


            if (gOrderCount > 1500)  //we limit max number of records returned to 1500
            {
                return null;
            }

            return oList.AsQueryable();
        }
    }
public IQueryable GetTrackingAllOrders(字符串custName、字符串supplier、字符串assigned)
{
var predicate=PredicateBuilder.False();
if(custName!=null&&custName!=String.Empty)
{
predicate=predicate.And(c=>c.CustomerName.Contains(custName));
}
if(supplier!=null&&supplier!=String.Empty)
{
谓词=谓词和(c=>c.Supplier.Contains(Supplier));
}
if(已分配!=null&&assigned!=String.Empty)
{
谓词=谓词和(c=>c.AssignedTo.Contains(assigned));
}
IQueryable oList=null;
使用(var ctx=新OMS_ISSEntities())
{
oList=(来自ctx.getssistrackinginfofunction()中的c)
orderby c.OrderID降序
选择新跟踪信息
{
OrderID=c.OrderID,
CustomerName=c.CustomerName??String.Empty,
ClientServiceID=c.ClientServiceID??String.Empty,
SiteName=c.SiteName??String.Empty,
SiteStatus=c.SiteStatus??字符串。为空,
IPNETWCount=c.IPNETWCount±0,
VOIPCount=c.VOIPCount±0,
AirCardCount=c.AirCardCount±0,
TicketProductType=c.TicketProductType??String.Empty,
SiteAddress=c.SiteAddress??String.Empty,
LCONPhone=c.LCONPhone??字符串。空,
供应商=c.供应商??字符串.空,
SupplierOrderNumber=c.SupplierOrderNumber??字符串。为空,
ConfFOCDate=c.ConfFOCDate,
DSLNumber=c.DSLNumber??字符串。空,
DSLLineType=c.DSLLineType??字符串。空,
JournalNote=c.JournalNote??String.Empty,
JournalLastUpdate=c.JournalLastUpdate,
项目=c.项目??字符串.空,
SiteICB=c.SiteICB,
SiteISSDueDate=c.SiteISSDueDate,
SiteISSInfo=c.SiteISSInfo??String.Empty,
AssignedTo=c.AssignedTo??String.Empty,
SiteSubmitDate=c.SiteSubmitDate,
SiteID=c.SiteID??String.Empty,
UserLogin=c.UserLogin??String.Empty,
ClientSiteType=c.ClientSiteType??String.Empty,
OpenJeop_Supp=c.OpenJeop_Supp,
PastDueFOC=c.PastDueFOC,
DaysSinceLastJNUpdate=c.DaysSinceLastJNUpdate,
SiteStatusID=c.SiteStatusID,
AssignedToID=c.AssignedToID,
供应商ID=c.供应商ID,
MasterCustID=c.MasterCustID,
MaxJeopSuppDate=c.MaxJeopSuppDate,
估计的dttu=c.Sit\u esttu
}).ToList().AsQueryable().Where(谓词);
gOrderCount=oList.Count();
if(gOrderCount>1500)//我们将返回的最大记录数限制为1500
{
返回null;
}
返回oList.AsQueryable();
}
}

我怀疑这就是问题所在:

var predicate = PredicateBuilder.False<TrackingInfo>();
很明显,这和任何东西都不匹配

您要使用此选项开始:

var predicate = PredicateBuilder.True<TrackingInfo>();

我怀疑这就是问题所在:

var predicate = PredicateBuilder.False<TrackingInfo>();
很明显,这和任何东西都不匹配

您要使用此选项开始:

var predicate = PredicateBuilder.True<TrackingInfo>();

我会先把它分解一下,然后再尝试立即做所有事情。在创建
跟踪信息
对象之前,请先尝试此操作

using (var ctx = new OMS_ISSEntities())
{
    var oList = from c in ctx.GetSSISTrackingInfoFuction().AsExpandable()
                orderby c.OrderID descending
                where c.Any(Predicate.Compile())
                select c;
}

然后,您可以检查查询结果并调整谓词,以确保它们是正确的。

在尝试立即执行所有操作之前,我将对此进行一些分解。在创建
跟踪信息
对象之前,请先尝试此操作

using (var ctx = new OMS_ISSEntities())
{
    var oList = from c in ctx.GetSSISTrackingInfoFuction().AsExpandable()
                orderby c.OrderID descending
                where c.Any(Predicate.Compile())
                select c;
}

然后你可以检查查询结果并调整谓词以确保它们是正确的。

我猜你的意思是
PredicateBuilder.True()
,对吗?@svick:嗯,是的。嘟嘟嘟嘟!我猜你的意思是
PredicateBuilder.True()
,对吧?@svick:嗯,是的。嘟嘟嘟嘟!非常感谢您的反馈。只需更改var谓词=PredicateBuilder.False();to var predicate=PredicateBuilder.True();这开始起作用了。我将考虑实施其他一些建议,但再次感谢您的快速反馈。非常感谢您的反馈。只需更改var谓词=PredicateBuilder.False();to var predicate=PredicateBuilder.True();这开始起作用了。我将考虑实施其他一些建议,但再次感谢您的快速反馈。