you can join 2 tables with LINQ this way, but it'll only list the shelves that contain books:

vb Code:
  1. Dim query = From A In ds.Tables("dtShelfs").AsEnumerable _
  2.               Join B In ds.Tables("dtBooks").AsEnumerable On _
  3.               A.Field(Of Integer)("shelfID") Equals B.Field(Of Integer)("shelfUsed") _
  4.               Select New With { _
  5.               .ShelfID = A.Field(Of Integer)("shelfID"), _
  6.               .ShelfLocation = A.Field(Of String)("shelfLocation"), _
  7.               .ShelfClassification = A.Field(Of String)("shelfClassification"), _
  8.                .BookName = B.Field(Of String)("bookName")}