というわけで覚書
まずは、ネタ元のペンギンテーブルを作成
Private Sub SetPenguins()
Dim PenguinName() = {"フンボルトペンギン", "コビトペンギン", "イワトビペンギン", "コウテイペンギン"}
Dim PenguinSize() = {60, 38, 61, 120}
Dim PenguinLiving() = {"南アメリカ", "オーストラリア", "フォークランド諸島", "南極"}
Dim PenguinNestle() = {"岩場", "巣穴", "岩場", "氷上"}
Penguins = New DataTable
Penguins.Columns.Add("Name", GetType(String))
Penguins.Columns.Add("Size", GetType(Integer))
Penguins.Columns.Add("Living", GetType(String))
Penguins.Columns.Add("Nestle", GetType(String))
Dim Penguin As DataRow
For i = LBound(PenguinName) To UBound(PenguinName)
Penguin = Penguins.NewRow()
Penguin.Item("Name") = PenguinName(i)
Penguin.Item("Size") = PenguinSize(i)
Penguin.Item("Living") = PenguinLiving(i)
Penguin.Item("Nestle") = PenguinNestle(i)
Penguins.Rows.Add(Penguin)
Next
End Subあんまりここは代わり映えなく(笑)←おいこら
というわけで、このDataTableから色んなペンギンを探し出します
Dim msg = ""
SetPenguins()
msg = ""
Dim AllPenguin = From Pen In Penguins
For Each PenPen In AllPenguin
msg += Join(PenPen.ItemArray, ":") & Chr(13)
Next
MsgBox(msg, , "全部のペンギン")
msg = ""
Dim MinPentuin = From Pen In Penguins Order By Pen.Item("Size") Take 1
For Each PenPen In MinPentuin
msg = PenPen.Item("Name").ToString
Next
MsgBox(msg, , "最小のペンギン")
msg = ""
Dim MaxPentuin = From Pen In Penguins Order By Pen.Item("Size") Descending Take 1
For Each PenPen In MaxPentuin
msg = PenPen.Item("Name").ToString
Next
MsgBox(msg, , "最大のペンギン")
msg = ""
Dim RockPenguin = From Pen In Penguins Where Pen.Item("Nestle").ToString = "岩場"
For Each PenPen In RockPenguin
msg += PenPen.Item("Name").ToString & Chr(13)
Next
MsgBox(msg, , "岩場に営巣するペンギン")
で動かすと
? 
こんな感じで出てきます。DataTableからデータをLINQした場合、取得するデータ型はDataRowCollectionとなります。Dimの後ろには変数を指定しているだけなので、VB.NET側で「じゃ、DataRowCollectionでよろしく」というわけですね
DataTableにあったSelectメソッドよりも柔軟な条件設定ができるのが大きい利点だと思うですよ