var v = from x in dataTable.AsEnumerable() >> group x by x.Field<string>("ItemName") into g >> select new >> { >> ItemName = g.Key, >> Quantity = g.Sum(x => x.Field<int>("Quantity")) >> }; >> >>//The above might be enough to work with? >>//If not then this would get it into a revised DataTable - but there's probably something better.... >> >> List<DataRow> al = new List<DataRow>(); >> >> foreach (var x in v) >> { >> DataRow dr = dataTable.NewRow(); >> dr["ItemName"] = x.ItemName; >> dr["Quantity"] = x.Quantity; >> al.Add(dr); >> } >> dataTable.Rows.Clear(); >> foreach (DataRow dr in al) >> { >> dataTable.Rows.Add(dr); >> }>
> >private void CombineDuplicateRows() >{ > DataTable table = csCOSApp.ActiveProject.dsDataStore.Tables[0]; > > var v = from x in table.AsEnumerable() > group x by x.Field<string>("Part_Number") into g > select new > { > Part_Number = g.Key, > Quantity = g.Sum(x => x.Field<int>("Quantity")), > RowId = x.RowId, > ProjectId = x.ProjectId, > ProductId = x.ProductId, > Product_Series = x.Product_Series, > Product_Number = x.Product_Number, > Product_Name = x.Product_Name, > Product_Description = x.Product_Description, > PartId = x.PartId, > Part_Description = x.Part_Description, > New_Part_Number = x.New_Part_Number, > Keyword = x.Keyword, > Category = x.Category, > TribalNumber = x.TribalNumber, > WhseQty1 = x.WhseQty1, > WhseQty2 = x.WhseQty2, > PartPrice = x.PartPrice, > PartRatio = x.PartRatio > }; > > List<DataRow> al = new List<DataRow>(); > > foreach (var x in v) > { > DataRow dr = table.NewRow(); > dr["Part_Number"] = x.Part_Number; > dr["Quantity"] = x.Quantity; > al.Add(dr); > } > > table.Rows.Clear(); > foreach (DataRow dr in al) > { > table.Rows.Add(dr); > } >} >>
var v = from x in dataTable.AsEnumerable() group x by x.Field<string>("Part_Number") into g select new { Part_Number = g.Key, Quantity = g.Sum(x => x.Field<int>("Quantity")), ProjectId = ((DataRow)g.First())["ProjectId"], ProductId = ((DataRow)g.First())["ProductId"] //Etc };I've a feeling there's a better way but I guess this works....