Основная причина того, что методы LINQ не работают с объектом, возвращаемым из db.Code.All (), заключается в том, что в этот момент в коде компилятор C # не знает, что это IEnumerable, поэтому он может: т подключить методы расширения. Конечно, компилятор C # не знает, что это за объект, потому что он динамический, поэтому он проходит над ним и предполагает, что метод First () будет разрешен во время выполнения.
Я пытался решить эту проблему в более поздних выпусках, и поддерживаются многие методы, включая ToList, First, FirstOrDefault, Single, SingleOrDefault и некоторые другие. Еще больше ожидается в ближайшее время (в релизах 0.9.x).
Самый простой способ вернуть компилятору полный эффект - это явно указать тип вместо использования var. Например
IEnumerable<Code> codes = db.Codes.All();
вызовет «неявное приведение» (заключенное в кавычки, потому что это не совсем так, но оно действует как единое целое) из типа SimpleQuery в тип IEnumerable, после чего вы можете снова начать использовать методы LINQ.