Thank all for your help, I guess there is to much in LINQ to learn since many objects are related to each other. Regarding my question, I solved using this way.
Dim context As New dxAdventureWorksDataContext
Dim query\_product As IQueryable(of Product) =
From p In context.Products
Select p
' build dynamic linq
query\_product = query\_product.Where(Function(f) f.ProductID > 1000)
query\_product = query\_product.Where(Function(f) f.Name.Contains("A"))
' create another query for required field, if you want all fields, you may omit this line
Dim query\_product\_field = From pp In query\_product Select pp.ProductNumber,pp.Name
' get sql query
Dim cmd As SqlCommand = TryCast(context.GetCommand(query\_product\_field), SqlCommand)
Debug.Print(cmd.CommandText)
the output is : SELECT [t0].[ProductNumber], [t0].[Name] FROM [Production].[Product] AS [t0] WHERE ([t0].[Name] LIKE @p0) AND ([t0].[ProductID] > @p1)