//request为查询条件
var result = from si in db.TableA
join ai in db.TableB on si.UserID equals ai.ID into ljTableB
from ai in ljTableB.DefaultIfEmpty()
join pi in db.TableC on si.ProductID equals pi.ID into ljTableC
from pi in ljTableC.DefaultIfEmpty()
join ps in db.TableD on si.SpecID equals ps.ID into ljTableD
from ps in ljTableD.DefaultIfEmpty()
select new InfoResposne
{
ID = si.ID,
DisplayID = pi.DisplayID,
ProductID = si.ProductID,
ProductName = pi.ProductName,
BarCode = pi.BarCode,
SpecID = si.SpecID,
Created = si.Created
};
//字符串
if (!string.IsNullOrWhiteSpace(request.DisplayID))
{
result = result.Where(p => p.DisplayID == request.DisplayID);
}
//字符串包含
if (!string.IsNullOrWhiteSpace(request.UserName))
{
userInfo = userInfo.Where(p => p.UserName.Contains(request.UserName));
}
//数字、状态类型
if (request.Amount!=null)
{
result = result.Where(p => p.Amount == request.Amount);
}
//时间范围
if (request.StockInStart != null)
{
result = result.Where(p => p.Created >= request.StockInStart);
}
//时间范围
if (request.StockInEnd != null)
{
result = result.Where(p => p.Created <= request.StockInEnd);
}
var response = new LogResponse();
response.TotalCount = result.Count();
response.DataList = result
.OrderByDescending(p => p.Created)
.Skip((request.PageIndex - 1) * request.PageSize)
.Take(request.PageSize)
.ToList();