/// <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的更多相关文章

  1. 结合element-ui表格自动生成sku规格列表

    最近在写一个根据输入的规格,属性值动态生成sku表格,实现的效果大致如图,这是在vue项目里,结合element-UI表格写的,写好了就整理了一下,把代码贴上来,方便以后使用,不过代码里还是有一些重复 ...

  2. 动态生成sku组合输入列表

    <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv=&quo ...

  3. 一个商品SKU是怎么生成的

    首先说一说什么是SKU.......自己百度去... 类似京东上面,未来人类S5这个台笔记本(没错,我刚入手了) 都是S5这个型号,但是因为CPU,显卡,内存,硬盘等不同,价格也不一样.CPU,显卡, ...

  4. 商品的spu、sku及其之间的关系

    今日来总结一下,电商系统中涉及到商品时必然会遇到的几个概念,SPU.SKU.单品等.彻底搞懂和明白了这几个概念对我们设计商品表是十分必要的前提条件. SPU:标准化产品单元 SPU = Standar ...

  5. 【知识点】SPU&SKU

    SPU:标准化产品单元 SPU = Standard Product Unit (标准化产品单元),SPU是商品信息聚合的最小单位,是一组可复用.易检索的标准化信息的集合,该集合描述了一个产品的特性. ...

  6. B2C电子商务系统研发——商品SKU分析和设计(二)

    转:http://www.cnblogs.com/winstonyan/archive/2012/01/07/2315886.html 上文谈到5种商品SKU设计模式,本文将做些细化说明. 笔者研究过 ...

  7. B2C电子商务系统研发——商品SKU分析和设计(一)

    一.SKU及相关概念定义 在设计商品SKU之前,首先让我们熟悉一下SKU和相关的一些概念. # 什么是SKU: SKU=Stock Keeping Unit(库存量单位) 同一型号的商品,或者说是同一 ...

  8. 你真的会玩SQL吗?之逻辑查询处理阶段

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  9. 关于join时显示no join predicate的那点事

    我们偶尔,非常偶尔的情况下会在一个查询计划中看到这样的警告: 大红叉,好吓人啊! 把鼠标放上去一看显示这样的信息 No join predicate 直译过来就是:没有连接谓词 在真实的生产环境下我们 ...

随机推荐

  1. WordPress 去掉功能中的 wordpress.org

    WordPress 去掉功能中的 wordpress.org  

  2. nyoj 206-矩形的个数 (a*b*(a+1)*(b+1)/4)

    206-矩形的个数 内存限制:64MB 时间限制:1000ms 特判: No 通过数:16 提交数:37 难度:1 题目描述: 在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1* ...

  3. shell脚本2——控制语句

    1.顺序结构体 命令从上往下顺序执行 2.分支结构体 1)判断真假 test 表达式 或者 [ 表达式 ](必须有空格) 真返回0,假返回1 test的别名是[, 参数是] 判断表达式 记忆 解释 ! ...

  4. opencv 1 HighGUI图形用户界面初步

    1图像载入 显示和输出到文件 Opencv的命名空间 Mat类 图像的载入:imread()函数 图片的显示:imshow()函数 创建窗口:namedWindow()函数 输出图像到文件:imwri ...

  5. 微调(Fine-tune)原理

    在自己的数据集上训练一个新的深度学习模型时,一般采取在预训练好的模型上进行微调的方法.什么是微调?这里已VGG16为例进行讲解,下面贴出VGGNet结构示意图. 上面圈出来的是VGG16示意图,也可以 ...

  6. C++程序的耦合性设计

    声明:本文部分采用和参考<代码里的世界观-通往架构师之路>中内容,可以说是该书中耦合性一章的读后感,感谢该书的作者余叶老师的无私分享. 1.什么是耦合? 耦合其实就是程序之间的相关性. 程 ...

  7. Idea创建maven项目,报错xxx already exists in VFS

    1.问题描述: 我打算在父级maven项目中创建子级project,但是一直报错如下: 2.stackover flow中找到了问题的答案, 地址:https://stackoverflow.com/ ...

  8. Echarts自定义折线图例,增加选中功能

    用Echarts图表开发,原本的Echarts图例不一定能满足我们的视觉要求. 下面是Echarts 折线图自定义图例,图例checked选中,相应的折线线条会随之checked,其余未选中的图例对应 ...

  9. php 图片指定留白叠加缩放

    遇到这样一个需求:原图大小不一,而且留白也大小不一,需要将原图切出来一个核心图,然后将图片左右留白,组成一个其他尺寸的图片.换句话说,原图在新图片中的位置是可以控制的. 这里思路是:先创建一个规定大小 ...

  10. IDEA如何重置窗口布局

    如何重置窗口布局 我不知道怎么搞的,左边的,上边的,下边的,视图都没有了 , 重启了一下,然后重置为默认视图,就好了