2016-08-17 3 views
0

Я разрабатываю Web-интерфейс Asp.Net с EntityFramework и должен возвращать некоторые определения с использованием динамических значений в виде ключей. Определения хранятся в таблице определения следующим образом:Динамический объект с использованием значений группы в качестве ключей

NICK  VALUE DESCRIPTION 
------ ----- -------------- 
GRADE  1  Very low 
GRADE  2  Low 
GRADE  3  Fair 
GRADE  4  High 
GRADE  5  Very high 
CONTROL 1  There is no control 
CONTROL 2  Control is fairly structured 
...  ... ... 

Вместо того, чтобы список определение в качестве обычного:

[ { "nick": "GRADE", "value": 1, "description": "Very low" }, 
    { "nick": "GRADE", "value": 2, "description": "Low" }, ... 
] 

я хотел бы получить ниже структуру:

[ "GRADE": [ 
    { "value": 1, "description": "Very low" }, 
    {"value": 1, "description": "Low" } ... 
    ], 
    "CONTROL": [ ... ] 
] 

используя функцию WebAPi, такую ​​как:

public Dictionary<string, List<ValueDescription>> GetDefinitions() 

где ЗначениеОписание простой класс следующим образом:

public class ValueDescription { 
    public int Value { get; set; } 
    public string Description { get; set; } 
} 

Я пробовал много подходов, но я не могу понять, как получить структуру с динамическими названиями клавиш. Кто-нибудь может дать мне ключ? Спасибо заранее.

ответ

1

Вы можете сгруппировать определения по NICK и затем использовать ToDictionary метод прохождения группы, Key в качестве словаря ключ и проектирование группы элементов в ValueDescription список в качестве словаря значения.

Что-то вроде этого:

var result = db.Definitions 
    .GroupBy(e => e.NICK) 
    .ToDictionary(g => g.Key, g => g.Select(e => new ValueDescription 
    { 
     Value = e.VALUE, 
     Description = e.DESCRIPTION, 
    }).ToList()); 
+0

Совершенный !! Большое спасибо, все получилось отлично! – Cappa

Смежные вопросы