public class Output
{
public int ID { get; set; }
public string NAME { get; set; }
public List<Detail> Details { get; set; }
}
//基本表
public class Info{
public int ID { get; set; }
public string NAME { get; set; }
}
//详情表
public class Details{
public int ID { get; set; }
public string NAME { get; set; }
}
//方法调用
public PageResult ConList(Input input)
{
var infos=GetPage(input);//获取条件查询数据
List<Output> outputs = new List<Output>();
foreach (var item in infos)
{
Output output = _mapper.Map<Output>(item);
output.MatContraceDetails = _contraceDetailRepository.SeletConID(item.ID);
outputs.Add(output);
}
return new PageResult<Output>
{
Data = outputs,
PageIndex = input.PageNum,
PageSize = input.PageSize,
TotalRecords = outputs.Count,
TotalPages = outputs.Count % input.PageSize == 0 ? outputs.Count / input.PageSize : outputs.Count / input.PageSize + 1
};
}
//条件查询数据
public List<Info> GetPage(Input input)
{
var whereItems = WhereBuilder.New<Info>()
.WhereNotEmpty(input.conNo, b => b.CON_NO == input.conNo)
var orderItems = OrderBuilder.New<Info>();
orderItems.Add(x => x.ID, true);
var con = Select().Query(whereItems.Build()).ToList();
return con;
}
//automapper中忽略此字段
CreateMap<Info, Output>().ForMember(t=>t.Details, from => from.Ignore());
以上案例目的是为了,从原有的数据输出类型
{
"StateCode": 200,
"Message": null,
"TotalRecords": 1,
"TotalPages": 1,
"Data": [
{
"MatContraceInfo": {
"ID": 6,
"NAME": "18"
},
"MatContraceDetails": [
{
"ID": 12,
"NAME": "18"
}
]
},
{
"MatContraceInfo": {
"ID": 6,
"NAME": "18"
},
"MatContraceDetails": [
{
"ID": 12,
"NAME": "18"
}
]
}
],
"PageIndex": 1,
"PageSize": 10
}
改为现在有的输入类型
{
"StateCode": 200,
"Message": null,
"TotalRecords": 1,
"TotalPages": 1,
"Data": [
{
"ID": 6,
"NAME": "18"
"MatContraceDetails": [
{
"ID": 12,
"NAME": "18"
}
]
}
],
"PageIndex": 1,
"PageSize": 10
}
总结:修改输出实体类,忽略字段映射。返回类依然可以用表的基本字段。