【问题标题】:C#, LInq, Entity Framework 4: Split a table in to a two dimensional array using LinqC#、LInq、Entity Framework 4:使用 Linq 将表拆分为二维数组
【发布时间】:2010-11-10 10:46:40
【问题描述】:

我有一个这样的实体:

public class Category
{
    public int classid {get;set;}
    public int itemid {get;set;}
    public string label {get;set;}
}

所以一个 List 会产生这个 JSON(三种尺寸和三种颜色

[{"classid":1,"itemid":1,"label":"Small"},
 {"classid":1,"itemid":2,"label":"Medium"},
 {"classid":1,"itemid":3,"label":"Large"},

 {"classid":2,"itemid":1,"label":"Blue"},
 {"classid":2,"itemid":2,"label":"Green"},
 {"classid":2,"itemid":3,"label":"Red"},

 {"classid":3,"itemid":1,"label":"Tee"},
 {"classid":3,"itemid":2,"label":"Golf"},
 {"classid":3,"itemid":3,"label":"Dress"}]

然而,JavaScript 客户端需要这样的东西 myarray[][].label:

[[{"itemid":1,"label":"Small"},
  {"itemid":2,"label":"Medium"},
  {"itemid":3,"label":"Large"}],

 [{"itemid":1,"label":"Blue"},
  {"itemid":2,"label":"Green"},
  {"itemid":3,"label":"Red"}],

 [{"itemid":1,"label":"Tee"},
  {"itemid":2,"label":"Golf"},
  {"itemid":3,"label":"Dress"}]]

这是在我的 Linq 查询中间的 smack dab。

我将如何构造 Linq 查询以从 Linq 中的一维数组组装二维数组?

编辑:现有查询:

 ...
 CATS = (from myP in myProduct.ProductCategories
        select new ProductCategory
        {
            classid = myP.classid,
            itemid = myP.itemid,
            label = myP.label
        }),
 ...

编辑:越来越近:

CATS = (from myP in myProduct.ProductCategories
        group myP by myP.classid into groups
        select new resultClass
        {  classid = groups.Key,
              opts = groups.Select(x => 
              new ProductOption 
              { itemid = x.itemid,
                label = x.label}) }),

【问题讨论】:

  • 向我们展示您现有的查询,我们将尝试对其进行修复以满足新的要求。
  • 这将与 GroupBy(item => item.classid) 相关,但如果没有您当前的查询,我将无法弄清楚其余部分会是什么样子。

标签: c# linq linq-to-entities


【解决方案1】:

我没有对此进行测试,但这是熟悉的领域并且应该可以工作:

IEnumerable<Category> items = ...;
var groups = items.GroupBy(x => x.classid);
var arrays = groups.Select(x => 
    x.Select(y => new { itemid = y.itemid, label = y.label }).ToArray()
).ToArray();

【讨论】:

  • 我最终尝试了我在问题中发布的内容。我的版本很接近,但还不够。
  • 不能在查询中执行 .ToList、ToArray 等,至少不是这个。它正在构建一个查询以供稍后过滤。
猜你喜欢
  • 2015-12-12
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多