使用笛卡尔积生成sku
/// <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; }
}
使用笛卡尔积生成sku的更多相关文章
- 结合element-ui表格自动生成sku规格列表
最近在写一个根据输入的规格,属性值动态生成sku表格,实现的效果大致如图,这是在vue项目里,结合element-UI表格写的,写好了就整理了一下,把代码贴上来,方便以后使用,不过代码里还是有一些重复 ...
- 动态生成sku组合输入列表
<!DOCTYPE html> <html> <head> <title></title> <meta http-equiv=&quo ...
- 一个商品SKU是怎么生成的
首先说一说什么是SKU.......自己百度去... 类似京东上面,未来人类S5这个台笔记本(没错,我刚入手了) 都是S5这个型号,但是因为CPU,显卡,内存,硬盘等不同,价格也不一样.CPU,显卡, ...
- 商品的spu、sku及其之间的关系
今日来总结一下,电商系统中涉及到商品时必然会遇到的几个概念,SPU.SKU.单品等.彻底搞懂和明白了这几个概念对我们设计商品表是十分必要的前提条件. SPU:标准化产品单元 SPU = Standar ...
- 【知识点】SPU&SKU
SPU:标准化产品单元 SPU = Standard Product Unit (标准化产品单元),SPU是商品信息聚合的最小单位,是一组可复用.易检索的标准化信息的集合,该集合描述了一个产品的特性. ...
- B2C电子商务系统研发——商品SKU分析和设计(二)
转:http://www.cnblogs.com/winstonyan/archive/2012/01/07/2315886.html 上文谈到5种商品SKU设计模式,本文将做些细化说明. 笔者研究过 ...
- B2C电子商务系统研发——商品SKU分析和设计(一)
一.SKU及相关概念定义 在设计商品SKU之前,首先让我们熟悉一下SKU和相关的一些概念. # 什么是SKU: SKU=Stock Keeping Unit(库存量单位) 同一型号的商品,或者说是同一 ...
- 你真的会玩SQL吗?之逻辑查询处理阶段
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- 关于join时显示no join predicate的那点事
我们偶尔,非常偶尔的情况下会在一个查询计划中看到这样的警告: 大红叉,好吓人啊! 把鼠标放上去一看显示这样的信息 No join predicate 直译过来就是:没有连接谓词 在真实的生产环境下我们 ...
随机推荐
- nyoj 20-吝啬的国度 (DFS)
20-吝啬的国度 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:12 submit:43 题目描述: 在一个吝啬的国度里有N个城市,这N个城市间只有 ...
- RabbitMQ学习笔记之五种模式及消息确认机制
本文详细介绍简单模式Simple.工作模式Work.发布订阅模式Publish/Subscribe.Topic.Routing. Maven依赖引用 <dependencies> < ...
- Hadoop之HDFS读写原理
一.HDFS基本概念 HDFS全称是Hadoop Distributed System.HDFS是为以流的方式存取大文件而设计的.适用于几百MB,GB以及TB,并写一次读多次的场合.而对于低延时数据访 ...
- Blocked a frame with origin XXX from accessing a cross-origin 。iframe跨域问题
在前端开发的过程中,我们常常会用到iframe去在我们的页面中引用一个子页面,而父子页面又常常会有交互.在同域情况下,子页面如果想要访问父页面中的window对象中的方法的话,直接在当前页面中使用wi ...
- Filebeat自定义索引 && 多output过滤
一.目标 1)实现自定义索引 2)不同的input输出到各自对应的索引,nginx的日志输出到index-nginx的索引,zabbix的日志输出到index-zabbix,app的日志输出到inde ...
- HotSpot虚拟机对象的创建过程
1.文中讨论的对象限于普通Java对象,不包括数组和class对象. 2.内存的分配方式由Java堆是否规整来决定,而Java堆是否规整取决于垃圾收集器是否有压缩整理的功能. 3.还需要考虑:对象的创 ...
- requests请求库练习--GitHub登录
# coding = utf-8 """ 结合抓包工具,采用两种方法模拟登录github直接利用session登录和利用requests登录 ""&q ...
- python数据分析pandas中的DataFrame数据清洗
pandas中的DataFrame中的空数据处理方法: 方法一:直接删除 1.查看行或列是否有空格(以下的df为DataFrame类型,axis=0,代表列,axis=1代表行,以下的返回值都是行或列 ...
- 简单入门Kubernetes
什么是Kubernetes 官网 https://kubernetes.io/ 中文版:https://kubernetes.io/zh/ 个人理解 基于容器技术 分布式架构 弹性伸缩 隔离物理机 和 ...
- 【Android - 控件】之MD - RecyclerView的使用
RecyclerView是Android 5.0新特性——Material Design中的一个控件,它将ListView.GridView整合到一起,可以使用极少的代码在ListView.GridV ...