c#对象列表
我有这门课:c#对象列表,c#,list,C#,List,我有这门课: class Order { public int ID { get; set; } public _Client Client { get; set; } public DateTime Date { get; set; } public List<Accessoire> Products { get; set; } public int AcessoireID { get; set; } } 类顺序 { 公共int ID{ge
class Order
{
public int ID { get; set; }
public _Client Client { get; set; }
public DateTime Date { get; set; }
public List<Accessoire> Products { get; set; }
public int AcessoireID { get; set; }
}
类顺序
{
公共int ID{get;set;}
公共_客户端{get;set;}
公共日期时间日期{get;set;}
公共列表产品{get;set;}
public int acessoreid{get;set;}
}
_客户端abd附件是具有某些属性ID等的类
我有一个从表OrderDetails填充的数据表(SQL server)
我有6行,有些行具有相同的orderID,但不同的accessoires属性
我正在使用:
public List<Order> AllOrders()
{
DataTable Table = new DataTable();
List<Order> Orders = new List<Order>();
Table = Browse(1,0);
foreach (DataRow Row in Table.Rows)
{
Order item = new Order();
item.ID = (int)Row[0];
item.Date = (DateTime)Row[1];
item.Products = new List<Accessoire>();
item.Client = new Gestion.Garage.Modules._Client();
item.Client.ID = (int)Row[2];
item.Client.Name = (string)Row[9];
item.Client.Phone = (string)Row[10];
item.Client.Email = (string)Row[11];
item.Client.Adress = (string)Row[12];
item.Client.Marque = (string)Row[13];
item.Client.Model = (string)Row[14];
item.Client.Kilometrage = (string)Row[15];
item.Client.Anne = (string)Row[16];
item.Client.Obvservation = (string)Row[17];
item.AcessoireID = (int)Row[18];
Orders.Add(item);
}
return Orders;
}
public List AllOrders()
{
DataTable=新的DataTable();
列表顺序=新列表();
表=浏览(1,0);
foreach(Table.Rows中的DataRow行)
{
订单项=新订单();
item.ID=(int)行[0];
item.Date=(DateTime)行[1];
item.Products=新列表();
item.Client=new Gestion.Garage.Modules._Client();
item.Client.ID=(int)行[2];
item.Client.Name=(字符串)行[9];
item.Client.Phone=(字符串)行[10];
item.Client.Email=(字符串)行[11];
item.Client.address=(字符串)行[12];
item.Client.Marque=(字符串)行[13];
item.Client.Model=(字符串)行[14];
item.Client.killage=(字符串)行[15];
item.Client.Anne=(字符串)行[16];
item.Client.Obvservation=(字符串)行[17];
item.acessoreid=(int)行[18];
订单。添加(项目);
}
退货订单;
}
但是我不知道如何在使用Foreach循环时填充列表,因为我无法初始化从表返回的每一行的Accessoires列表。所以我所做的非常简单: 我加了这个 一个调用存储过程的简单函数,该存储过程按条件(其中orderID)从其表中获取所有Accessoire
私有列表附件(int-orderID)
{
列表附件=新列表();
DataTable=新的DataTable();
SqlParameter[]param=新的SqlParameter[1];
param[0]=新的SqlParameter(“@orderID”,SqlDbType.Int);
参数[0]。值=医嘱ID;
表=方法.GetData(参数“GetAccessoires”);
如果(Table.Rows.Count>0)
{
foreach(Table.Rows中的DataRow行)
{
附件项=新附件();
item.ID=(int)行[1];
item.Name=GetAccessoireName((int)行[1]);
item.Qte=(int)行[2];
item.Price=第[3]行.ToString();
附件。添加(项目);
}
}
归还附属品;
}
并使用它:
public List<Order> AllOrders()
{
DataTable Table = new DataTable();
List<Order> Orders = new List<Order>();
Table = Browse(1, 0);
foreach (DataRow Row in Table.Rows)
{
Order item = new Order();
item.ID = (int)Row[0];
item.Date = (DateTime)Row[1];
item.Products = new List<Accessoire>();
item.Products = Accessoires((int)Row[0]); <=== Modified here
item.Client = new Gestion.Garage.Modules._Client();
item.TotalPrice = (string)Row[3];
item.Client.ID = (int)Row[2];
item.Client.Name = (string)Row[9];
item.Client.Phone = (string)Row[10];
item.Client.Email = (string)Row[11];
item.Client.Adress = (string)Row[12];
item.Client.Marque = (string)Row[13];
item.Client.Model = (string)Row[14];
item.Client.Kilometrage = (string)Row[15];
item.Client.Anne = (string)Row[16];
item.Client.Obvservation = (string)Row[17];
item.AcessoireID = (int)Row[18];
if (!Orders.Contains(item))
{
Orders.Add(item);
}
}
return Orders;
}
public List AllOrders()
{
DataTable=新的DataTable();
列表顺序=新列表();
表=浏览(1,0);
foreach(Table.Rows中的DataRow行)
{
订单项=新订单();
item.ID=(int)行[0];
item.Date=(DateTime)行[1];
item.Products=新列表();
item.Products=Accessoires((int)Row[0]);所以我做的很简单:
我加了这个
一个调用存储过程的简单函数,该存储过程按条件(其中orderID)从其表中获取所有Accessoire
私有列表附件(int-orderID)
{
列表附件=新列表();
DataTable=新的DataTable();
SqlParameter[]param=新的SqlParameter[1];
param[0]=新的SqlParameter(“@orderID”,SqlDbType.Int);
参数[0]。值=医嘱ID;
表=方法.GetData(参数“GetAccessoires”);
如果(Table.Rows.Count>0)
{
foreach(Table.Rows中的DataRow行)
{
附件项=新附件();
item.ID=(int)行[1];
item.Name=GetAccessoireName((int)行[1]);
item.Qte=(int)行[2];
item.Price=第[3]行.ToString();
附件。添加(项目);
}
}
归还附属品;
}
并使用它:
public List<Order> AllOrders()
{
DataTable Table = new DataTable();
List<Order> Orders = new List<Order>();
Table = Browse(1, 0);
foreach (DataRow Row in Table.Rows)
{
Order item = new Order();
item.ID = (int)Row[0];
item.Date = (DateTime)Row[1];
item.Products = new List<Accessoire>();
item.Products = Accessoires((int)Row[0]); <=== Modified here
item.Client = new Gestion.Garage.Modules._Client();
item.TotalPrice = (string)Row[3];
item.Client.ID = (int)Row[2];
item.Client.Name = (string)Row[9];
item.Client.Phone = (string)Row[10];
item.Client.Email = (string)Row[11];
item.Client.Adress = (string)Row[12];
item.Client.Marque = (string)Row[13];
item.Client.Model = (string)Row[14];
item.Client.Kilometrage = (string)Row[15];
item.Client.Anne = (string)Row[16];
item.Client.Obvservation = (string)Row[17];
item.AcessoireID = (int)Row[18];
if (!Orders.Contains(item))
{
Orders.Add(item);
}
}
return Orders;
}
public List AllOrders()
{
DataTable=新的DataTable();
列表顺序=新列表();
表=浏览(1,0);
foreach(Table.Rows中的DataRow行)
{
订单项=新订单();
item.ID=(int)行[0];
item.Date=(DateTime)行[1];
item.Products=新列表();
item.Products=附件((int)行[0]);不能使用foreach——使用一个更有趣的循环,有时创建一个新对象,有时不创建。或者使用foreach,但保留一个指向上一个对象的指针,以查看是否应该更新该对象或创建一个新对象。这使一个想法突然出现谢谢!您可以使用IEnumerable
并使用yield return
f功能性。不能使用foreach——使用一个更有趣的循环,有时创建一个新对象,有时不创建。或者使用foreach,但保留一个指向上一个对象的指针,以查看是否应该更新该对象或创建一个新对象。这使一个想法突然出现谢谢!您可以使用IEnumerable
并使用生成return
功能。我不认为您需要新数据表()
或如果(Table.Rows.Count>0)
。我需要查看一些其他检查的计数,但是的,我不需要新数据表()
我正在手动填充数据表来检查一些东西。我认为您不需要新数据表()
或如果(Table.Rows.Count>0)
。我需要查看一些其他检查的计数,但我不需要新建数据表()
我正在进行manuel数据表填充以检查某些内容