Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#对象列表_C#_List - Fatal编程技术网

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数据表填充以检查某些内容