Respuesta corta: LINQ no es vulnerable a la inyección de SQL.
Respuesta larga:
LINQ no es como SQL. Hay una biblioteca detrás de escena que construye SQL a partir de árboles de expresiones generados por el compilador a partir de su código, asignando los resultados a los objetos y, por supuesto, se ocupa de hacer las cosas seguras en el camino.
Ver LINQ to SQL FAQ:
P. ¿Cómo se LINQ a SQL protegida ataques de inyección SQL?
A. La inyección de SQL ha sido un riesgo significativo para las consultas SQL tradicionales formadas por la entrada concatenada del usuario . LINQ to SQL evita dicha inyección mediante el uso de SqlParameter en consultas . La entrada del usuario se convierte en valores de parámetro . Este enfoque impide que los comandos maliciosos sean utilizados a partir de la entrada del cliente.
Internamente, significa que cuando LINQ a SQL consulta la base, en lugar de utilizar los valores de fricción, que los pasa como parámetros SQL, que significa que pueden Nunca ser tratados como código ejecutable por la base de datos.Esto también es cierto para la mayoría (si no para todos) de los mapeadores ORM que existen.
comparar estos dos enfoques (totalmente pseudo-código):
string name = "' ; DROP DATABASE master --"
run ("SELECT * FROM Authors WHERE Name = '" + name + "'") // oops!
// now we'd better use parameters
SqlParameter name = new SqlParameter ("@name", "' ; DROP DATABASE master --")
run ("SELECT * FROM Authors WHERE Name = @name", name) // this is pretty safe
le sugiero que profundizar más en lo que realmente significan las declaraciones de LINQ y cuándo y cómo se traduce a SQL real. Es posible que desee obtener información acerca de LINQ standard query operator translation, deferred execution, different LINQ providers y demás. En el caso de LINQ, al igual que cualquier tecnología de abstracción, es a la vez fascinante e increíblemente útil saber lo que está sucediendo detrás de escena.
P.S. Cada vez que veo una pregunta sobre la inyección de SQL, no puedo evitar recordar este webcomic.

poner eso en un bloque de comillas en lugar de un bloque de código – msarchet
Sí, se perdió el botón. Gracias por señalar. –
Sin embargo, si está utilizando Linq para concatenar cadenas y entradas, aún puede ser vulnerable. – Oded