Linq 选取datatable 指定列
发布日期:2021-11-15 03:27:13 浏览次数:6 分类:技术文章

本文共 3819 字,大约阅读时间需要 12 分钟。

/*遍历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()))
                        };

转载地址:https://blog.csdn.net/qq_30469045/article/details/51883631 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:使用Session验证用户登录
下一篇:Html 页面 局部刷新方法

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月09日 21时51分41秒