【问题标题】:Linq - Boolean - where statementLinq - Boolean - where 语句
【发布时间】:2017-11-19 01:25:01
【问题描述】:

我正在努力解决以下代码。

var q = from hed in cxt.SOPOrderReturns.ToExpandable()
        join cus in cxt.SLCustomerAccounts 
              on hed.CustomerID equals cus.SLCustomerAccountID
        join ad in cxt.SOPDocDelAddresses 
              on hed.SOPOrderReturnID equals ad.SOPOrderReturnID
        where hed.AnalysisCode1 == "SO"
        select new
        {
            hed.SOPOrderReturnID,
            hed.DocumentNo,
            hed.DocumentDate,
            cus.CustomerAccountNumber,
            Route = hed.AnalysisCode2,
            Drop = hed.AnalysisCode5,
            hed.ReadyForInvoicePrint,
        };

q = q.RemoveExpandable();

return q;

列 hed.ReadyForInvoicePrint 是布尔值,我想添加一个 where 语句,该语句还显示该列是否为 FALSE。

谢谢

杰米

【问题讨论】:

    标签: c# linq boolean


    【解决方案1】:

    您可以通过将&& !hed.ReadyForInvoicePrint 添加到您的where 语句来过滤此列的false 值。

    【讨论】:

      【解决方案2】:

      根据您的要求,我相信您希望能够查询多个参数。您可以简单地添加一个变量来执行此操作。

      var q = from hed in cxt.SOPOrderReturns.ToExpandable()
      var someVar = true | false;
      join cus in cxt.SLCustomerAccounts on hed.CustomerID equals 
      cus.SLCustomerAccountID
      join ad in cxt.SOPDocDelAddresses on hed.SOPOrderReturnID equals 
      ad.SOPOrderReturnID
      where hed.AnalysisCode1 == "SO" && hed.ReadyForInvoicePrint == someVar
      
      select new
      {
      hed.SOPOrderReturnID,
      hed.DocumentNo,
      hed.DocumentDate,
      cus.CustomerAccountNumber,
      Route = hed.AnalysisCode2,
      Drop = hed.AnalysisCode5,
      hed.ReadyForInvoicePrint,
      
      };
      
      q = q.RemoveExpandable();
      
      return q;
      

      或者,您可以将查询包装到 IQueryable where 子句可以在以后有条件地添加到您的代码中。

      private IQueriable<SOPOrderReturns> GetSOPOrderReturnsQuery(){
      var q = from hed in cxt.SOPOrderReturns.ToExpandable()
      join cus in cxt.SLCustomerAccounts on hed.CustomerID equals 
      cus.SLCustomerAccountID
      join ad in cxt.SOPDocDelAddresses on hed.SOPOrderReturnID equals 
      ad.SOPOrderReturnID
      
      select new
      {
      hed.SOPOrderReturnID,
      hed.DocumentNo,
      hed.DocumentDate,
      cus.CustomerAccountNumber,
      Route = hed.AnalysisCode2,
      Drop = hed.AnalysisCode5,
      hed.ReadyForInvoicePrint,
      
      };
      
      q = q.RemoveExpandable();
      
      return q.AsQueryable();
      }
      

      获取查询并进行更改

      var query = GetSOPOrderReturnsQuery();
      query = query.Where(x=>x.AnalysisCode1 == "SO");
      query = query.Where(x=>x.ReadyForInvoicePrint == false);
      

      希望这会有所帮助。

      【讨论】:

      • 感谢您对 Linq 非常陌生但第一个选项 && 的帮助。等等...为我工作的问题似乎是我把 == False 放在它只会接受 ==false 的地方没有意识到它是区分大小写的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多