遇到了一个比较特殊的查询(表没有设计好,也就是加一个字段能解决了),才发现了linq to sql 还可以这样的去动态的拼接where条件,不然也不会这样写,这里记录一下,代码如下:
from bill in list
join invoice in _invoiceAppService.Query()
on bill.BillNo equals invoice.BillNo
into tempData
from data in tempData.DefaultIfEmpty()
where !bill.IsDeleted
&& ((input.InvoiceStatus == -1 && data.InvoiceStatus != -1) || (input.InvoiceStatus > -1 && data.InvoiceStatus == input.InvoiceStatus))
group bill by new { bill } into g
select g.Key.bill;
( )包起来一个查询条件,| | 就相当于if else了,还比较方便,作为记录。