/// <summary>
/// 生成SKU价格表
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public Result<IList<SkuGroup>> GeneratePriceList(IList<SkuGroup> model)
{
try {
var result = new List<SkuGroup>();
var data = new SkuGroup();
data.Items = new List<SkuItem>();
//过滤掉无效的SkuGroup
model = model.Where(x => x.Items != null && x.Items.Count > ).ToList();
Descartes(model, , result, data);
return new Result<IList<SkuGroup>>(true, "操作成功!", result);
//return result;
}
catch (Exception ex)
{
//LogException(ex);
return new Result<IList<SkuGroup>>(false, "操作失败!");
} }
/// <summary>
/// 笛卡尔积
/// </summary>
/// <param name="list"></param>
/// <param name="count"></param>
/// <param name="result"></param>
/// <param name="data"></param>
/// <returns></returns>
public IList<SkuItem> Descartes(IList<SkuGroup> list,int count, IList<SkuGroup> result, SkuGroup data)
{
var temp = new List<SkuItem>();
//获取当前SkuGroup
var astr = new SkuGroup();
astr = list[count];
var group = new SkuGroup();
group.Id = astr.Id;
group.Name = astr.Name;
group.Selected = astr.Selected;
group.ItemType = astr.ItemType;
//循环当前SkuGroup的Items
foreach (var item in astr.Items)
{
item.Group = group;
if (count + < list.Count)
{
//中转,以达成传输本层及上层的item
var transfer = new SkuGroup();
transfer.Items = new List<SkuItem>();
foreach (var i in data.Items)
{
transfer.Items.Add(i);
}
transfer.Items.Add(item);
Descartes(list, count + , result, transfer);
}
else
{
var sku = new SkuGroup();
sku.Items = new List<SkuItem>();
//var items = new List<SkuItem>();
//存入上层的item
foreach (var i in data.Items)
{
sku.Items.Add(i);
}
//存入本次item
sku.Items.Add(item);
result.Add(sku);
}
} return temp;
}
public class SkuGroup
{
public long Id { get; set; }
public string Name { get; set; } public ICollection<SkuItem> Items { get; set; } public bool Selected { get; set; } /// <summary>
/// SkuItem数据表类名称
/// </summary>
/// <remarks>例:平台销售属性值为PlatformInfo,平台类目销售属性为PlatformIndustryInfo,版本销售属性为SkuItem</remarks>
public string ItemType { get; set; } public Guid? CategoryId { get; set; }
}
    public class SkuItem
{
public long Id { get; set; } public long GroupId { get; set; } public string Name { get; set; } /// <summary>
/// 选中
/// </summary>
public bool Selected { get; set; } public virtual SkuGroup Group { get; set; }
}

最新文章

  1. 【移动前端开发实践】从无到有(统计、请求、MVC、模块化)H5开发须知
  2. MySQL的那点事!
  3. linux下的apache配置文件详解
  4. 处理session跨域几种的方案
  5. 好用的开源爬虫 jsoup
  6. java多线程详解(4)-多线程同步技术与lock
  7. 解决centos7中python-pip模块不存在的问题
  8. 跟服务器交互的Web表单(form)
  9. Codeforces Round #262 (Div. 2) 二分+贪心
  10. CentOS 安装Node.js
  11. Java内存一致性
  12. zf-关于&lt;ww:iterator /&gt; 标签中的&lt;td /&gt; 标签添加序号问题
  13. Swift应用案例 2.闭包入门到精通
  14. Day-3: Python基础
  15. Python数据分析流程
  16. Angular之ngRoute与uiRoute
  17. MySQL操作的一些优化
  18. Redis的持久化机制包括RBD和AOF两种,对于这两种持久化方式各有优势
  19. Linux时间子系统之(十七):ARM generic timer驱动代码分析
  20. Gitlab的SSH配置(linux和windows双版本)

热门文章

  1. requests模块使用代理
  2. 【前端知识体系-CSS相关】CSS特效实现之Transition和Transform对比
  3. 023.掌握Pod-Pod扩容和缩容
  4. LXC容器文件系统设计优化
  5. Docker-Compose基础与实战,看这一篇就够了
  6. leetcode 114二叉树转换成链表
  7. 计蒜客 The Preliminary Contest for ICPC Asia Nanjing 2019
  8. Celery框架实现异步执行任务
  9. Node_exporter一键安装部署脚本(Shell)
  10. Bash Shell编程简记