Глава 11 (Внутренние деревья выражений) и глава 12 (Расширение Linq) программирования Microsoft Linq (ISBN 13: 978-0-7356-2400-9 или ISBN 10: 0-7356-2400-3) была неоценима для мне. Я не читал книгу Джонса, но он качественный парень и хорошо все объясняет, поэтому я предполагаю, что его освещение также будет хорошим.
Еще один замечательный ресурс - Блог Барта де Смета
Кроме того, следите за MSDN, пример кода для создания Simple Linq to Database (автор Pedram Rezaei) собирается получить около 40 страниц Doco, объясняющих это.
Действительно, очень полезный ресурс для дерева выражений. На самом деле, я бы посчитал, что должен иметь это Визуализатор дерева выражений инструмент отладки.
Вы также должны узнать как можно больше о посетителях дерева выражений, здесь есть довольно хороший базовый класс здесь .
Вот пример кода, полученного из этого класса Visitor, для выполнения некоторой отладки (я основал это на некотором примере кода в книге, которую я упомянул), вызов метода prependIndent - это просто метод расширения в строке, чтобы поставить «-» на каждом уровне отступа.
internal class DebugDisplayTree : ExpressionVisitor
{
private int indentLevel = 0;
protected override System.Linq.Expressions.Expression Visit(Expression exp)
{
if (exp != null)
{
Trace.WriteLine(string.Format("{0} : {1} ", exp.NodeType, exp.GetType().ToString()).PrependIndent(indentLevel));
}
indentLevel++;
Expression result = base.Visit(exp);
indentLevel--;
return result;
}
...