简体   繁体   English

在C#中通过linq条件检索数据

[英]Conditional retrieval of data through linq in C#

            var Getdetails = (from p in XYZDb.tblPulls
                          join
                          ro in XYZDb.tblRentalOrders
                          on p.AffCode equals ro.AffCode.Value
                          join
                          tpsb in XYZDb.tblPullSheetBatchProcessings
                          on p.PullNo.ToString() equals tpsb.PullSheet

                          select new
                          {
                              PullNos = p.PullNo,
                              AffCode = p.AffCode,
                              TotalItems = p.TotalItems,
                              p.PostedOn,
                              p.UpdatedOn,
                              p.IsPrinted,
                              BatchName =  tpsb.BatchName 

                          })

                              .Where(i => i.PostedOn >= from_date && i.PostedOn <= to && i.IsPrinted != null).Distinct();

In the above code only the pullno having BatchName are coming, i want to retrieve all the pullno within that timezone, and if it is batched, then the BatchName will also appear. 在上面的代码中,只有具有BatchName的Pullno即将到来,我想检索该时区内的所有Pullno,并且如果将其进行批处理,那么BatchName也会出现。 I am stuck on that. 我坚持下去。 Any kind of help will be appreciated. 任何帮助将不胜感激。 Feel free to ask any question. 随时问任何问题。

Use left outer join, 使用左外连接,

 var Getdetails = (from p in XYZDb.tblPulls
                      join
                      ro in XYZDb.tblRentalOrders
                      on p.AffCode equals ro.AffCode.Value
                      join
                      tpsb in XYZDb.tblPullSheetBatchProcessings
                      on p.PullNo.ToString() equals tpsb.PullSheet into pt
                      from batch in pt.DefaultIfEmpty()
                      select new
                      {
                          PullNos = p.PullNo,
                          AffCode = p.AffCode,
                          TotalItems = p.TotalItems,
                          p.PostedOn,
                          p.UpdatedOn,
                          p.IsPrinted,
                          BatchName = (batch == null ? String.Empty : batch.BatchName ) 

                      })
                      .Where(i => i.PostedOn >= from_date && i.PostedOn <= to && i.IsPrinted != null).Distinct();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM