C# 从嵌套类动态创建DataTable
我试图从一个包含一些嵌套类的类中创建C.NET3.5中的DataTables集合。我基本上是获取一个JSON对象,将其解析为一个RootObject集合,然后最终将其加载到SQL Server db中。我需要一个表,用于下面的每个类expect RootObject,理想情况下,只有value属性在datatable中有一列 下面是我的类的一个片段,我的实际类有5-30个属性:C# 从嵌套类动态创建DataTable,c#,.net,datatable,C#,.net,Datatable,我试图从一个包含一些嵌套类的类中创建C.NET3.5中的DataTables集合。我基本上是获取一个JSON对象,将其解析为一个RootObject集合,然后最终将其加载到SQL Server db中。我需要一个表,用于下面的每个类expect RootObject,理想情况下,只有value属性在datatable中有一列 下面是我的类的一个片段,我的实际类有5-30个属性: public class RootObject { [JsonProperty("BaseOrderShip
public class RootObject
{
[JsonProperty("BaseOrderShipment")]
public BaseOrderShipment BaseOrderShipment { get; set; }
[JsonProperty("BaseOrder")]
public BaseOrder BaseOrder { get; set; }
[JsonProperty("BaseOrderShipmentLineitem")]
public IList<BaseOrderShipmentLineitem> BaseOrderShipmentLineitem { get; set; }
}
public class BaseOrderShipment
{
[JsonProperty("shipment_id")]
public int ShipmentId { get; set; }
[JsonProperty("order_id")]
public int OrderId { get; set; }
}
public class BaseOrder
{
[JsonProperty("order_id")]
public int OrderId { get; set; }
[JsonProperty("ShippingAddress")]
public ShippingAddress ShippingAddress { get; set; }
[JsonProperty("BillingAddress")]
public BillingAddress BillingAddress { get; set; }
[JsonProperty("Lookup")]
public IList<Lookup> Lookup { get; set; }
}
public class ShippingAddress
{
[JsonProperty("ship_address_id")]
public int ShipAddressId { get; set; }
[JsonProperty("order_id")]
public int OrderId { get; set; }
}
public class BillingAddress
{
[JsonProperty("bill_address_id")]
public int BillAddressId { get; set; }
[JsonProperty("order_id")]
public int OrderId { get; set; }
}
public class Lookup
{
[JsonProperty("lookup_id")]
public int LookupId { get; set; }
[JsonProperty("order_id")]
public int OrderId { get; set; }
}
public class BaseOrderShipmentLineitem
{
[JsonProperty("line_item_id")]
public int LineItemId { get; set; }
[JsonProperty("order_id")]
public int OrderId { get; set; }
[JsonProperty("shipment_id")]
public int ShipmentId { get; set; }
}
我的第一个想法是迭代RootObject类来创建一组空表,然后在我将JSON解析到IList之后填充它们。我的另一个想法是创建DataTable并立即填充它们。我相信这是有争议的,哪一个是更好的方法,所以我对任何一个都持开放态度
类似这样的操作将创建一个datatable,您可以修改LINQ查询以将所需的属性合并到表中
List<RootObject> retObj = new List<RootObject>();
IEnumerable<DataRow> query =
(from order in retObj.AsEnumerable()
select new
{
//alter these to build the additional datatable columns you require
order.BaseOrder.OrderId,
order.BaseOrder.BillingAddress.BillAddressId,
order.BaseOrder.ShippingAddress.ShipAddressId
})
as IEnumerable<DataRow>;
DataTable dtbBaseOrder = query.CopyToDataTable<DataRow>();
你可能想看一看,然后。我认为这些软件包可以自动完成您需要做的事情。当然,需要进行一些设置。因此,为了澄清您是否希望根对象中的每个对象都有一个数据表?例如,BaseOrderShipping、BaseOrder、BaseOrderShippmentLineItem
List<RootObject> retObj = new List<RootObject>();
IEnumerable<DataRow> query =
(from order in retObj.AsEnumerable()
select new
{
//alter these to build the additional datatable columns you require
order.BaseOrder.OrderId,
order.BaseOrder.BillingAddress.BillAddressId,
order.BaseOrder.ShippingAddress.ShipAddressId
})
as IEnumerable<DataRow>;
DataTable dtbBaseOrder = query.CopyToDataTable<DataRow>();