В MySQL существует функция, GROUP_CONCAT () , который позволяет Вам связывать значения от нескольких строк. Пример:
SELECT 1 AS a, GROUP_CONCAT(name ORDER BY name ASC SEPARATOR ', ') AS people
FROM users
WHERE id IN (1,2,3)
GROUP BY a
Чтобы получить значение перечисления, вам нужно привести перечисление к его базовому типу:
Value = ((int)i).ToString();
Прошло некоторое время с тех пор, как мне пришлось сделай это, но я думаю, что это должно сработать.
var directions = from Direction d in Enum.GetValues(typeof(Direction))
select new { ID = (int)d, Name = d.ToString() };
return new SelectList(directions , "ID", "Name", someSelectedValue);
, возможно, не является точным ответом на вопрос, но в сценариях CRUD я обычно реализую что-то вроде этого:
private void PopulateViewdata4Selectlists(ImportJob job)
{
ViewData["Fetcher"] = from ImportFetcher d in Enum.GetValues(typeof(ImportFetcher))
select new SelectListItem
{
Value = ((int)d).ToString(),
Text = d.ToString(),
Selected = job.Fetcher == d
};
}
PopulateViewdata4Selectlists
вызывается перед View ("Создать") и "Просмотр" ("Редактировать"), затем и в представлении:
<%= Html.DropDownList("Fetcher") %>
и все ..
Это то, что я только что сделал, и лично я считаю его сексуальным:
public static IEnumerable<SelectListItem> GetEnumSelectList<T>()
{
return (Enum.GetValues(typeof(T)).Cast<T>().Select(
enu => new SelectListItem() { Text = enu.ToString(), Value = enu.ToString() })).ToList();
}
Я собираюсь сделать кое-что для перевода, чтобы Value = enu.ToString () где-то что-то вызвал.