2013-09-24 22 views
1

我有兩個數據表具有相同的列數。我要檢查其名稱是具有新的數據表中的不同的組或子組。(Using Linq如何比較相同格式的兩個數據表的區別?

DataTableOLD 

CODE NAME GROUP SUBGROUP 
c1  AA  GP1  SGP1 
c2  BB  GP1  SGP1 
c3  CC  GP1  SGP2 
c4  DD  GP1  SGP2 
c5  EE  GP2  SGP3 


DataTableNEW 
CODE NAME GROUP SUBGROUP 
c1  AA  GP1  SGP4 
c2  BB  GP1  SGP1 
c3  CC  GP3  SGP5 
c4  DD  GP1  SGP2 
c6  FF  GP2  SGP3 


Resultant table (show only those where there is mismatch in either group or group and subgroup both) 

OLDCODE OLDNAME OLDGROUP OLDSUBGROUP NEWCODE NEWNAME NEWGROUP NEWSUBGROUP 
c1  AA  GP1   SGP1  c1  AA  GP1  SGP4 
c3  CC  GP1   SGP2  c3  CC  GP3  SGP5 

回答

1
var lstResult = (from _old in DataTableOLD.AsEnumerable() 
    join _new in DataTableNew.AsEnumerable() on _old.Field<string>("CODE") 
     equals _new.Field<string>("CODE") 
    where _old.Field<string>("GROUP") != _new.Field<string>("GROUP") || 
    _old.Field<string>("SUBGROUP") != _new.Field<string>("SUBGROUP") 
    select new 
    { 
     OLDCODE = _old.Field<string>("CODE"), 
     OLDNAME = _old.Field<string>("NAME"), 
     OLDGROUP = _old.Field<string>("GROUP"), 
     OLDSUBGROUP = _old.Field<string>("SUBGROUP"), 
     NEWCODE = _new.Field<string>("CODE"), 
     NEWNAME = _new.Field<string>("NAME"), 
     NEWGROUP = _new.Field<string>("GROUP"), 
     NEWSUBGROUP = _new.Field<string>("SUBGROUP") 
    } 
); 
相關問題