我正在创建一个Web应用程序,我有两个类:
public class MOrderMain
{
public int ID { get; set; }
public int CompanyID { get; set; }
public string CompanyName { get; set; }
public DateTime OrderDate { get; set; }
public string BillingName { get; set; }
public string BillingAddress { get; set; }
public string DeliveryName { get; set; }
public string DeliveryAddress { get; set; }
}
public class MOrder
{
public int ID { get; set; }
public int OrhID { get; set; }
public int ProID { get; set; }
public string Name { get; set; }
public int Quantity { get; set; }
public double Rate { get; set; }
public double Amount { get; set; }
public int DeliveredQty { get; set; }
}
我想从两个类中检索细节。例如,我想得到
来自班级ID
的{{1}}和Billing Name
以及班级MorderMain
中的所有属性。我怎么能这样做?
我通过数据库获取值。我有查询,但我将如何分配数据以及如何从两者中检索?
MOrder
答案 0 :(得分:0)
由于您要从数据库中的两个表中检索数据,但希望将它们组合到应用程序中,因此解决方案是创建一个包含从存储过程返回的数据的类:
public class MAllOrderDetails
{
public int ID { get; set; }
public string BillingName { get; set; }
// include the other billing details you want here
public int OrhID { get; set; }
public int ProID { get; set; }
public string Name { get; set; }
public int Quantity { get; set; }
public double Rate { get; set; }
public double Amount { get; set; }
public int DeliveredQty { get; set; }
}
然后,您的查询将更改为填写List<MAllOrderDetails>
。
这使您的应用程序只处理单个类的集合,并且所有数据都包含在单个对象中。
var mylist = new List<MAllOrderDetails>();
//...
while (_dr.Read())
{
mylist.Add(new MAllOrderDetails
{
ID = Convert.ToInt32(_dr["ordID"]),
BillingName = _dr["BillingName"].ToString(),
// etc.
OrhID = Convert.ToInt32(_dr["orhID"]),
ProID = Convert.ToInt32(_dr["proID"]),
Name = _dr["pName"].ToString(),
Quantity = Convert.ToInt32(_dr["ordQty"]),
Rate = Convert.ToDouble(_dr["ordRate"]),
Amount = Convert.ToDouble(_dr["ordAmount"]),
DeliveredQty = Convert.ToInt32(_dr["ordQtyDelivered"])
});
}
<强>更新强>
你可能可以将其作为不创建其他类的最接近的解决方案:
class MAllOrderDetails
{
public MOrder Order { get; set; }
public MOrderMain OrderMain { get; set; }
}
但我觉得,从可维护性的角度来看,这会让您比仅创建其他类更令人头疼。