Преобразование списка объектов в Список <List <string>> данных - PullRequest
0 голосов
/ 18 августа 2010

Я пытаюсь использовать плагин jquery DataTables для своей системы, используя веб-сервис для заполнения данных посредством вызова ajax.

То, что мне нужно вернуть из веб-сервиса, это список вроде этого: List<List<string>>;

У меня около 120 различных классов доменов, используемых этим в качестве основных объектов данных, поэтому мне нужна какая-то система, где я могу получить данные из различных классов доменов и преобразовать их в List<List<string>> внесколько автоматический способ.

Способ получения данных выглядит примерно так (пример кода):

List<Core.Room> coreDataList = Core.GetRoomsInHotel(int hotelID);

Я изучал DynamicLinq и System.Reflection, но получилнигде: (


ОБНОВЛЕНИЕ:

То, что мне нужно вернуть из веб-службы, это массив, подобный этому:

[
    ["data-col-1","data-col-2","data-col-3","data-col-4"],
    ["data-col-1","data-col-2","data-col-3","data-col-4"],
    ["data-col-1","data-col-2","data-col-3","data-col-4"]
]

Чтобы заполнить этот массив,около 120 различных списков классов доменов с различными свойствами, и мне нужно динамически обращаться к этим свойствам для каждого из них:

Для комнаты, основанной на объекте, похожем на это:

public class Room {
    public int ID { get; set; }
    public string Name { get; set; }
    public string Code { get; set; }
    public string LongName { get; set; }
}
[
    ["ID", "Double","DBL"],
    ["ID", "Single","SNG"],
    ["ID", "Suite","SUI"]
]

Для отеля:

public class Hotel {
    public int ID { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public int RoomCount { get; set; }
    public int FloorCount { get; set; }
}
[
    ["1","Plaza","153","12"],
    ["2","Astoria","568","25"]
]

У меня есть XML-файл с конфигурацией для списков:

<list id="29">
  <readable_name>Hotels - Roomtypes - List all roomtypes in system</readable_name>
  <no_data_message>No roomtypes found</no_data_message>
  <cols>
    <col width="0" visible="false" datafield="ID" type="key" headertext="ID" />
    <col width="70" visible="true" datafield="Name" type="string" headertext="Name" />
    <col width="30" visible="true" datafield="Type" type="string" headertext="Type" />
  </cols>
</list>

Итак, я извлекаю конфигурацию из XML-файлав зависимости от того, какой список я хочу загрузить.Я вызываю хранилище данных на основе идентификатора списка и получаю список любого класса домена, который я хочу (номер / отель).Я просматриваю возвращенный список и создаю вид массива, чтобы можно было заполнить список на странице.

Надеюсь, это немного прояснит ситуацию ...

1 Ответ

2 голосов
/ 18 августа 2010
List<Core.Room> coreDataList = Core.GetRoomsInHotel(int hotelID); 
List<string> coreDataStrList = coreDataList
                                .Select(room => room.ToString())
                                .ToList();

Кроме того, нам понадобится дополнительная информация о вашем коде.

ОБНОВЛЕНИЕ:

List<string> ToStringList<T>(this IEnumerable<T> list)
{
    list.Select(obj => obj.ToString()).ToList();
}

List<Core.Room> coreRoomList = ... 
List<Core.Hotel> coreHotelList = ... 

List<List<string>> ListofLists = new List<List<string>> ();

ListofLists.Add(coreRoomList.ToStringList());
ListofLists.Add(coreHotelList.ToStringList());

(Было бы любезно, если бы вы дали нам большеодна строка кода за раз. Эти 120 списков сгруппированы как-то? У них есть общая база?

...