【问题标题】:Transforming a list of objects into List<List<string>> of data将对象列表转换为数据的 List<List<string>>
【发布时间】:2010-08-18 14:25:35
【问题描述】:

我正在尝试为我的系统使用 jquery DataTables 插件,使用 Web 服务通过 ajax 调用填充数据。

我需要从 web 服务返回一个这样的列表:List&lt;List&lt;string&gt;&gt;;

我有大约 120 个不同的域类被它用作核心数据对象,所以我需要某种系统,我可以从不同的域类中获取数据并以某种自动的方式将它们转换为 List&lt;List&lt;string&gt;&gt; .

我获取数据的方式是这样的(示例代码):

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

我一直在研究 DynamicLinq 和 System.Reflection,但一无所获 :(


更新:

我需要从 web 服务返回一个这样的数组:

[
    ["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 文件中提取配置。我根据列表 ID 调用数据存储,并获取我想要的任何域类(房间/酒店)的列表。我遍历返回的列表并生成一种数组,以便可以填充页面上的列表。

我希望这可以澄清一些事情......

【问题讨论】:

  • 请添加更多详细信息。您要填充的字符串列表中的字符串是什么?你想用“coreDataList”做什么?
  • List coreDataList = ... List coreDataList = ... 然后我需要将这些列表转换成一个 List> 里面的列表是 coreDataList 中的一项,所有属性(或某些属性)都转换为字符串,然后将该行添加到要呈现到页面上的 dataTable 上的主行列表中。

标签: c# jquery .net jquery-datatables


【解决方案1】:
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 个列表是否以某种方式分组?它们有共同的基础吗?

【讨论】:

  • 问题是,我正在寻找一种动态的方式来做这件事,因为我说过我有 120 个这样的列表,我不想对所有列表选择性地这样做。
猜你喜欢
  • 1970-01-01
  • 2013-10-31
  • 2021-09-17
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-28
相关资源
最近更新 更多