SQL文字列を直接記述するよりもC#のLINQが優れているのは、リファクタリングツールでメンバ名などを書き換えても
LINQで書かれたソースはC#のソースなのでキチンと置換されてくれる事。
これが文字列として記述されていると、そこで挙動の同一性を保持したまま各種変更を加える事は極めて困難になる。
その文字列がSQLかどうかなど判断したり解析したりするツールなんて思いつかないしね。
本体の言語から、まったく別のシステムまで型システムが貫通するとこういう事もできるようになる。