none
有关c# 3.0中的集合初始值设定项 RRS feed

  • 问题

  •  public class parame
    
      {
    
        public String Name { get; set; }
    
        public Int32 Age { get; set; }
    
      }
    
     
    
      public class Program
    
      {
    
        static void Main(string[] args)
    
        {
    
         IList<parame> people = new List<parame>()
    
         {
    
           new parame{ Name = "张三", Age = 18},
    
           new parame{ Name = "李四", Age = 20}
    
         };
    
         foreach (var i in people)//var 是3.0特有的
    
         {
    
           Console.WriteLine("{0},{1}", i.Name, i.Age);
    
         }
    
         Console.ReadLine();
    
        }
    
     }

    上面是有关c# 3.0中的集合初始值设定项例子,里面的值是一个加进去的。如果我是从数据库读出来怎么加进去。。已前是用foreach中list.add加进去的。。

    List<shopInfo> temp =new List<shopInfo>();
          DataSet ds = AccessHelper.ExecuteDataSet(AccessHelper.conn, SQL_SELECT_GETSHOPLIST, null);
          foreach(DataRow row in ds.Tables[0].Rows)
            temp.Add(new shopInfo(Convert.ToInt32(row["ID"]),row["Name"].ToString()));

    不知道c#3.0中的集合初始值怎么数据库里的字段值

     

    不知道,这c# 3.0中的集合初始值设定项怎么加数据库里的值。。

    2010年7月8日 9:06

答案

  • 你好!

         你可以先把数据库里的数据加载到DataSet或DataTable中,然后再处理。Rows,Columns等属性本身就是集合。

         如果你想导入其他集合没有继承关系的集合,那只能用常规方法来添加。


    周雪峰
    2010年7月10日 5:24
    版主
  • 是这么玩的:

    // 我凭空做了个数据集,你把dt替换成你从数据库里读取到的DataTable。
    DataTable dt = new DataTable();
    dt.Columns.Add("Name", typeof(String));
    dt.Columns.Add("Age", typeof(Int32));
    DataRow dr1 = dt.NewRow();
    dr1["Name"] = "张三";
    dr1["Age"] = 18;
    dt.Rows.Add(dr1);
    DataRow dr2 = dt.NewRow();
    dr2["Name"] = "李四";
    dr2["Age"] = 20;
    dt.Rows.Add(dr2);

    // 来这么一句。
    IList<DataRow> people = dt.AsEnumerable().Cast<DataRow>().ToList<DataRow>();

    // 遍历。
    foreach (var i in people)
    {
        Console.WriteLine("{0},{1}", i["Name"], i["Age"]);
    }

    2010年7月11日 7:35

全部回复

  • 你好!

         你可以先把数据库里的数据加载到DataSet或DataTable中,然后再处理。Rows,Columns等属性本身就是集合。

         如果你想导入其他集合没有继承关系的集合,那只能用常规方法来添加。


    周雪峰
    2010年7月10日 5:24
    版主
  • 是这么玩的:

    // 我凭空做了个数据集,你把dt替换成你从数据库里读取到的DataTable。
    DataTable dt = new DataTable();
    dt.Columns.Add("Name", typeof(String));
    dt.Columns.Add("Age", typeof(Int32));
    DataRow dr1 = dt.NewRow();
    dr1["Name"] = "张三";
    dr1["Age"] = 18;
    dt.Rows.Add(dr1);
    DataRow dr2 = dt.NewRow();
    dr2["Name"] = "李四";
    dr2["Age"] = 20;
    dt.Rows.Add(dr2);

    // 来这么一句。
    IList<DataRow> people = dt.AsEnumerable().Cast<DataRow>().ToList<DataRow>();

    // 遍历。
    foreach (var i in people)
    {
        Console.WriteLine("{0},{1}", i["Name"], i["Age"]);
    }

    2010年7月11日 7:35
  • 数据库读出来不能是list,必须转换!

    2010年7月13日 3:27