Group table rows by all address fields, and the calculate sum for each group:
var query =
from p in table.AsEnumerable()
group p by new {
Address1 = p.Field<string>("address1"),
Address2 = p.Field<string>("address2"),
Address3 = p.Field<string>("address3"),
City = p.Field<string>("city"),
State = p.Field<string>("state"),
Postcode = p.Field<string>("postcode"),
Country = p.Field<string>("country")
} into g
select new {
Address = g.Key,
TotalWeight = g.Sum(x => x.Field<int>("weight"))
};
That will give you sequence of anonymous objects, which will have all address fields in Address property and sum of weights in TotalWeight property.