2010-07-22 4 views
0

Quels changements dois-je faire afin de réduire cette tâche avec moins de lignes et une meilleure approche.Copier le résultat de Linq dans DataTable

DataTable dtStatusMsgs; 
    var statusList = (
        from items in dtInputTable.AsEnumerable() 
        where items.Field<int>("DepartmentId") == deptId 
        select new 
        { 
         statusId = items.Field<int>("StatusId"), 
         status = items.Field<string>("Status"), 
         statusOrder = items.Field<int>("StatusSortOrder"), 
         rowId = items.Field<int>("RowId") 

        }).Distinct(); 

    dtStatusMsgs = new DataTable(); 
    dtStatusMsgs.Columns.Add("StatusId", typeof(int)); 
    dtStatusMsgs.Columns.Add("Status", typeof(string)); 
    dtStatusMsgs.Columns.Add("StatusSortOrder", typeof(int)); 
    dtStatusMsgs.Columns.Add("RowId", typeof(int)); 

    foreach (var item in statusList) 
     dtStatusMsgs.Rows.Add(item.statusId, item.status,item.statusOrder 
           , item.rowId); 

Je veux que ce soit fait quelque chose comme ça.

DataTable dtStatusMsgs; 
    var statusList = (
        from items in dtInputTable.AsEnumerable() 
        where items.Field<int>("DepartmentId") == deptId 
        select new 
        { 
         statusId = items.Field<int>("StatusId"), 
         status = items.Field<string>("Status"), 
         statusOrder = items.Field<int>("StatusSortOrder"), 
         rowId = items.Field<int>("RowId") 

        }).Distinct(); 



dtStatusMsgs= statusList.CopyToDataTable<DataRow>(); 

Et comment utiliser la fonction Sum sur l'une des colonnes de ce code. Je veux voir un exemple de code sur cette application pour toute fonction d'agrégation

+1

Jetez un oeil à ceci: http://stackoverflow.com/questions/564366/generic-list-to-datatable –

Répondre

1
dtStatusMsgs = new DataTable();  
dtStatusMsgs.Columns.Add("StatusId", typeof(int));  
dtStatusMsgs.Columns.Add("Status", typeof(string));  
dtStatusMsgs.Columns.Add("StatusSortOrder", typeof(int));  
dtStatusMsgs.Columns.Add("RowId", typeof(int)); 

statusList.ForEach(p => dtStatusMsgs.Rows.Add(p.StatusId, p.Status, p.StatusSortOrder,p.RowId)); 
Questions connexes