Linq 选取datatable 指定列

/*遍历DataTable*/
         class  ClientStruct
         {
             public  string  ID =  "ID" ;
             public  string  Name =  "Name" ;
             public  string  Company =  "Company" ;
             public  string  CreatedDate =  "CreatedDate" ;
         }
 
         public  string [,] infoArr =  new  string [,] { {  "1" "百度" "baidu" "201303"  }, {  "2" "迅雷" "xunlei" "201302"  }, {  "3" "谷歌" "guge" "201301"  } };
         protected  void  LinqDataTable()
         {
             DataRow row;
             ClientStruct cs =  new  ClientStruct();
             DataTable dtTable =  new  DataTable();
             dtTable.Columns.Add(cs.ID);
             dtTable.Columns.Add(cs.Name);
             dtTable.Columns.Add(cs.Company);
             dtTable.Columns.Add(cs.CreatedDate);
             for  ( int  i = 0; i < 3; i++)
             {
                 row = dtTable.NewRow();
                 row[cs.ID] = infoArr[i, 0];
                 row[cs.Name] = infoArr[i, 1];
                 row[cs.Company] = infoArr[i, 2];
                 row[cs.CreatedDate] = infoArr[i, 3];
                 dtTable.Rows.Add(row);
             }
 
             //遍历DataTable,取出所有的ID
             List< string > lstID = (from d  in  dtTable.AsEnumerable()
                                   select d.Field< string >(cs.ID)).ToList< string >();
 
             //遍历DataTable,将其中的数据对应到ClientStruct中:
             List<ClientStruct> list = (from x  in  dtTable.AsEnumerable()
                                        orderby x.Field< string >(cs.Company)
                                        select  new  ClientStruct
                                        {
                                            ID = x.Field< string >(cs.ID),
                                            Name = x.Field< string >(cs.Name),
                                            Company = x.Field< string >(cs.Company),
                                            CreatedDate = x.Field< string >(cs.CreatedDate)
                                        }).ToList<ClientStruct>();
 
             //遍历DataTable,并将上面的List结果存储到Dictionary中:
             Dictionary< string , ClientStruct> dic = list.ToDictionary(p => p.Company);
             //p作为string键值来存储
         }


//选取datatable指定列
var query = from c in dt.AsEnumerable()
                        select new
                        XSDDExeStatusMingXi
                        {
                            vou_no = c.Field<string>("vou_no"),
                            corr_id = c.Field<string>("corr_id"),
                            corr_name = c.Field<string>("corr_name"),
                            item_no = c.Field<string>("item_no"),
                            item_name = c.Field<string>("item_name"),
                            item_spec = c.Field<string>("item_spec"),
                            item_pattern = c.Field<string>("item_pattern"),
                            unit_name = c.Field<string>("unit_name"),
                            order_qty = c.Field<decimal>("order_qty"),
                            date_demand = c.Field<DateTime>("date_demand"),
                            lock_qty = c.Field<decimal>("lock_qty"),
                            PC_qty = c.Field<decimal?>("PC_qty") == 0 ? "": c.Field<decimal?>("PC_qty").ToString(),
                            PG_qty = c.Field<decimal?>("PG_qty") == 0 ? "" : c.Field<decimal?>("PG_qty").ToString(),
                            RK_qty = c.Field<decimal?>("RK_qty") == 0 ? "" : c.Field<decimal?>("RK_qty").ToString(),
                            FH_qty = c.Field<decimal?>("FH_qty") == 0 ? "" : c.Field<decimal?>("FH_qty").ToString(),
};

//group by 

            var query = from c in dt.AsEnumerable()
                        group c by new
                        {
                            vou_no = c.Field<string>("vou_no"),
                            vou_no_line = c.Field<int>("vou_no_line"),
                            confirm_date = c.Field<DateTime?>("confirm_date")
                        }
                            into s
                        select new
                        XSDDExeStatusMingXi
                        {

                            vou_no = c.Select(p => p.Field<string>("vou_no").Trim()).First(),
                            corr_id = s.Select(p => p.Field<string>("corr_id").Trim()).First(),
                            corr_name = s.Select(p => p.Field<string>("corr_name").Trim()).First(),
                            item_no = s.Select(p => p.Field<string>("item_no").Trim()).First(),
                            item_name = s.Select(p => p.Field<string>("item_name").Trim()).First(),
                            item_spec = s.Select(p => p.Field<string>("item_spec").Trim()).First(),
                            item_pattern = s.Select(p => p.Field<string>("item_pattern").Trim()).First(),
                            unit_name = s.Select(p => p.Field<string>("unit_name").Trim()).First(),
                            order_qty = s.Select(p => p.Field<decimal>("order_qty")).First(),
                            date_demand = s.Select(p => p.Field<DateTime>("date_demand")).First(),
                            lock_qty = s.Select(p => p.Field<decimal>("lock_qty")).First(),






                            PC_qty = string.Join("<br>", s.Select(p => p.Field<decimal?>("PC_qty") == 0 ? "" : p.Field<decimal?>("PC_qty").ToString())),


                            PG_qty = string.Join("<br>", s.Select(p => p.Field<decimal?>("PG_qty") == 0 ? "" : p.Field<decimal?>("PG_qty").ToString())),


                            RK_qty = string.Join("<br>", s.Select(p => p.Field<decimal?>("RK_qty") == 0 ? "" : p.Field<decimal?>("RK_qty").ToString())),




                            FH_qty = string.Join("<br>", s.Select(p => p.Field<decimal?>("FH_qty") == 0 ? "" : p.Field<decimal?>("FH_qty").ToString()))
                        };


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值