Compiler error processing expression

still we recommend to avoid over-LINQing as it can be managed different and more optimizied as mentioned above

have a look at the Let clause from the query syntax

(From d in DT_file5_data.AsEnumerable.Skip(2)
Let colsetreq = {"SHIPNAME","IMO","ME1.NOX","ME1.POWER","ME1.RPM","ME1.SFOC"}
Let colset = d.itemArray.Select(Function (x,i) d.Table.Columns(i).ColumnName)
Let colcheck1 = colsetreq.Except(colset).Any()
Where not colcheck1 
Let valcheck = colset.Any(Function (x) isNothing(d(x)) OrElse Strig.IsNullOrEmpty(d(x).toString.Trim))
Where not valcheck
Let yearValue  = If(DT_file5_data.Columns.Contains("YEAR") AndAlso Not String.IsNullOrEmpty(x("YEAR").ToString), CInt(x("YEAR").ToString), 0)
Let tierValue = If(yearValue < 2011, "T-I", If(yearValue >= 2011 AndAlso yearValue < 2016, "T-II", "T-III"))
Let ra = Construct_Your_ItemArray_here
Select r = DT_File5_Output.Rows.Add(ra)).ToArray()

take as a starter help and keep in mind that we still can improve and optimize it to a more condensed and readable form