You do not mention if you are using Linq to SQL or if you are doing Entity Framework. Assuming Entity Framework:
It is interesting that you want to join two tables but then show code that is not totally relavent to the question. (I would have expected table definitions) But the general syntax would be as follows:
from positions in context.ite_positions
join vessels in context.ite_vessels on positions.imo_no equals vessels.imo_no
select ...
Typically in this situation you are returning a self-defined object that is a culmination of the two tables. However if vessels is just a child table of positions, then an alternative is this:
from positions in context.ite_positions.Include("Vessels")
where .....
In this case you are telling linq to include the child table Vessels which must match a property name on the entity. EF will handle the join and populate the child collection using the navigation property (in this case imo_no) So your entity should have a property that is defined:
public class Position
...
ICollection<ite_vessels> Vessels{get;set;}
...
</ite_vessels>
If you google '
linq to sql join two tables' you will get more information on the syntax.