Я не знаю SubSonic вообще, но FWIW похожая проблема существует с Entity Framework. В этом случае все сводится к тому, что нет прямого перевода ElementAt в SQL.
First()
можно легко перевести на SELECT TOP 1 FROM ... ORDER BY ...
, но то же самое нелегко выразить для ElementAt
.
Вы можете утверждать, что, например, ElementAt(5)
следует перевести на SELECT TOP 5 FROM ... ORDER BY ...
, а затем просто отбросить первые четыре элемента, но это не очень хорошо работает, если вы попросите ElementAt(100000)
.
В EF вы можете частично решить эту проблему, заставив выражение сначала вычисляться, что можно сделать с помощью вызовов AsEnumerable
, ToList
или ToArray
.
Например
var binaryAssetStructure = binaryAssetStructures.AsEnumerable().ElementAt(0);
Надеюсь, это поможет, хотя и не направлено явно на SubSonic.