C #, LInq, Entity Framework 4: разделить таблицу на двумерный массив с помощью Linq - PullRequest
0 голосов
/ 10 ноября 2010

У меня есть такая сущность:

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.

Как мне построить запрос 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}) }),

1 Ответ

1 голос
/ 10 ноября 2010

Я не проверял это, но это знакомая территория и должен работать:

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...