I would probably use either UDF / CTE or (for very deep structures) a stored procedure that does the same thing manually.
, , /, BETWEEN, (.. , // , ).
Re 2 - yield , (T IEnumerable<T>/IEnumerator<T>).
yield a IEnumerable<Comment> , IEnumerable<IEnumerable<Comment>> - ?
:
- , udf ( , ), CTE
using, DataContext IDisposable...
:
using(var db = new MyDataContext() ) { }
- LoadWith , , ...
- - , , ... , ... ( .. , API)