Sampy said:
You can always perform the join with LINQ to Objects after you have retrieved the items from the database. You can even use an array of anonymous types to do so.

I don't want to try and say "CASE is useless! You don't need it!" but rather that I don't think the lack of CASE as an obvious part of LINQ to SQL (or just LINQ in general) is a huge problem. If you really need it, you can use the trinary operator trick mentioned above but there are other ways to achieve the same effect.
In VB, use Microsoft.VisualBasic.Switch function; LINQ will translate into CASE statement.