C#如何从IQueryable获取数据表<;T>;包括多对象列表

C#如何从IQueryable获取数据表<;T>;包括多对象列表,c#,C#,我有一个IQueryable列表,其中包括一些对象列表。我想从列表中获取一个DataTable并显示为一个表 IQuerable<Load> loads; public class Load { public int LoadID { get; set; } public string CustomerName { get; set; } public List<PickUp> ShipperPickUp

我有一个IQueryable列表,其中包括一些对象列表。我想从列表中获取一个DataTable并显示为一个表

IQuerable<Load> loads;
public class Load
{        
    public int LoadID { get; set; }        
    public string CustomerName { get; set; }      
    public List<PickUp> ShipperPickUps { get; set; }
    public List<Deliver> ConsigneeDelivers { get; set; }
    public List<string> ReferenceNumbers { get; set; }
    ...        
}

public class PickUp
{
    public int? LoadID { get; set; }
    public int? ShipperID { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }     
    ...
}

public class Deliver
{
    public int? LoadID { get; set; }
    public int? ConsigneeID { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    ...
}
我想得到另一个像这样的可读取列表或数据表:

IQuerable<ExportData>:
{
  {
    LoadID:1,
    LoadNumber:"0001",
    CustomerName:"Customer1",
    ShipperName:"Shipper1",
    DeliverName:"Consignee1",
    ReferenceNumber:"Reference1"
    ...
  },
  {
    LoadID:1,
    LoadNumber:"0001",
    CustomerName:"Customer2",
    ShipperName:"Shipper2",
    DeliverName:"Consignee2",
    ReferenceNumber:"Reference2"
    ...
  },
  {
    LoadID:2,
    LoadNumber:"0002",
    CustomerName:"Customer3",
    ShipperName:"Shipper3",
    DeliverName:"Consignee3",
    ReferenceNumber:"Reference3"
    ...
  },
  {
    LoadID:2,
    LoadNumber:"0002",
    CustomerName:"Customer4", 
    ShipperName:"Shipper4",
    DeliverName:"Consignee4",
    ReferenceNumber:"Reference4"
    ...
  },
  ...
}
iquirable:
{
{
LoadID:1,
装载编号:“0001”,
客户名称:“客户1”,
ShipperName:“Shipper1”,
交货名称:“收货人1”,
参考编号:“参考1”
...
},
{
LoadID:1,
装载编号:“0001”,
客户名称:“客户2”,
ShipperName:“Shipper2”,
交货名称:“收货人2”,
参考编号:“参考2”
...
},
{
LoadID:2,
装载编号:“0002”,
客户名称:“客户3”,
ShipperName:“Shipper3”,
交货名称:“收货人3”,
参考编号:“参考3”
...
},
{
LoadID:2,
装载编号:“0002”,
客户名称:“客户4”,
ShipperName:“Shipper4”,
交货名称:“收货人4”,
参考编号:“参考4”
...
},
...
}
最好的方法是什么

我试过了

IQueryable<ExportData> exportData;
exportData = loads
    .Select(load => new ExportData
     {
         LoadID = load.LoadID,
         LoadNumber = load.LoadNumber,
         CustomerName = load.CustomerName,
         ...
      });
IQueryable导出数据;
exportData=加载
.选择(加载=>new ExportData
{
LoadID=load.LoadID,
LoadNumber=load.LoadNumber,
CustomerName=load.CustomerName,
...
});

但我不知道对象列表。有什么建议吗?

你们如何在彼此之间匹配
pick
/
Deliver
/
Reference
?这就是问题所在。现在我只是按顺序匹配它们。你需要一些代码< LoadConsigmentTable >代码>中间的代码> LoadID,ShipperId,DeliveryId,RealthIdID < /Calp> Hi,Michal。这就是我想要的结果。列出loadID、ShipperId、DeliveryId、ReferenceId。每个LoadID都有多个发货人、交货和参考。他们按顺序配对。这意味着在一个loadID中,第一个发货人匹配第一次交付和第一次引用。第二个发货人匹配第二次交货和第二次参考。如何在彼此之间匹配
提货
/
交货
/
参考?这就是问题所在。现在我只是按顺序匹配它们。你需要一些代码< LoadConsigmentTable >代码>中间的代码> LoadID,ShipperId,DeliveryId,RealthIdID < /Calp> Hi,Michal。这就是我想要的结果。列出loadID、ShipperId、DeliveryId、ReferenceId。每个LoadID都有多个发货人、交货和参考。他们按顺序配对。这意味着在一个loadID中,第一个发货人匹配第一次交付和第一次引用。第二个发货人匹配第二次交付和第二次参考。
IQuerable<ExportData>:
{
  {
    LoadID:1,
    LoadNumber:"0001",
    CustomerName:"Customer1",
    ShipperName:"Shipper1",
    DeliverName:"Consignee1",
    ReferenceNumber:"Reference1"
    ...
  },
  {
    LoadID:1,
    LoadNumber:"0001",
    CustomerName:"Customer2",
    ShipperName:"Shipper2",
    DeliverName:"Consignee2",
    ReferenceNumber:"Reference2"
    ...
  },
  {
    LoadID:2,
    LoadNumber:"0002",
    CustomerName:"Customer3",
    ShipperName:"Shipper3",
    DeliverName:"Consignee3",
    ReferenceNumber:"Reference3"
    ...
  },
  {
    LoadID:2,
    LoadNumber:"0002",
    CustomerName:"Customer4", 
    ShipperName:"Shipper4",
    DeliverName:"Consignee4",
    ReferenceNumber:"Reference4"
    ...
  },
  ...
}
IQueryable<ExportData> exportData;
exportData = loads
    .Select(load => new ExportData
     {
         LoadID = load.LoadID,
         LoadNumber = load.LoadNumber,
         CustomerName = load.CustomerName,
         ...
      });