【问题标题】:How To optimise following linq to object query如何优化以下 linq 到对象查询
【发布时间】:2015-06-17 09:02:21
【问题描述】:

我有一个具有以下属性的可枚举类

 Sku

 Itemid

 colorid

 size_id

例如:

sku1  item1 color1 size1

sku1  item2 color2 size1

sku2  item2 color3 size1

这里的sku可以重复多次

我想把结构改成这样 Sku1 comma_seperated_colors comma_seperated_size

所以对于 sku1,输出应该是

sku1 color2,color1 size1

目前我正在这样做

   var item3 = (from iq in items2 select new { 
        iq.SKU,
        AllColors = string.Join(",", (from i in items2 where i.SKU == iq.SKU select i.color_class).DefaultIfEmpty().ToArray()),
        AllSizes = string.Join(",", (from i in items2 where i.SKU == iq.SKU select i.size).Distinct().DefaultIfEmpty().ToArray())
        });

然后选择唯一的 sku。 现在由于需要多次扫描,这需要很长时间。 我可以让它更快吗??

提前致谢

【问题讨论】:

    标签: c# asp.net linq linq-to-objects


    【解决方案1】:

    好吧,你不能使用 groupby 吗?

    var item3 = items.GroupBy (m => m.SKU)
                     .Select(g => new {
                        SKU = g.Key,
                        colors = string.Join("," , g.Select(m => m.color_class)
                                                    .Distinct()),//you could do a .OrderBy(m => m) after the distinct
                        sizes = string.Join(",", g.Select(m => m.size)
                                                  .Distinct())//you could do a .OrderBy(m => m) after the distinct
                     });
    

    对于“字符串”结果:

    var result = item3.Select(m.SKU + " " + m.colors + " " + m.sizes).ToList();
    

    var result = item3.Select(m => string.Format("{0} {1} {2}", m.SKU, m.colors, m.sizes)).ToList();
    

    【讨论】:

      猜你喜欢
      • 2021-03-24
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-29
      • 1970-01-01
      相关资源
      最近更新 更多