2010-07-22 4 views
0

적은 수의 라인으로이 작업을 줄이고 더 나은 접근 방법으로 줄이기 위해 어떤 변화가 필요합니까?Linq의 결과를 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); 

나는 이렇게하고 싶습니다.

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>(); 

그리고이 코드의 열에 Sum 함수를 사용하는 방법. 내가

+1

이 한 번 봐 모든 집계 함수를 적용이의 샘플 코드를보고 싶어 : http://stackoverflow.com/questions/564366/generic-list-to-datatable –

답변

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));