With regard to projecting from a DataRow to an anonymous type producing disconnected data... it doesn't have to be that way. Check out SyncLinq:
http://www.paulstovell.net/blog/index.php/why-synclinq-should-matter-to-you/