一、Inner Join
//request为查询条件
var result = from a in db.TableA
join b in db.TableB
on a.ID equals b.ID
where a.UserName == request.UserName || a.Mobile == request.Mobile
select new ResponseInfo
{
UserName = ui.UserName,
UserID = ui.ID,
Mobile = ui.Mobile,
Value = ue.Value
};
二、Left Join
//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();