在LINQ to SQL中,出现异常“不支持查询运算符'ElementAt'”。尝试在从LINQ返回SQL查询的IQueryable上使用ElementAt扩展方法时。
这是堆栈跟踪:
at System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall(MethodCallExpression mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitMethodCall(MethodCallExpression mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
at System.Data.Linq.SqlClient.QueryConverter.ConvertOuter(Expression node)
at System.Data.Linq.SqlClient.SqlProvider.BuildQuery(Expression query, SqlNodeAnnotations annotations)
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
at System.Data.Linq.Table`1.System.Linq.IQueryProvider.Execute[TResult](Expression expression)
at System.Linq.Queryable.ElementAt[TSource](IQueryable`1 source, Int32 index)
现在,我意识到摆脱此异常并使用ElementAt可以在使用扩展方法之前调用'.ToList()',它将起作用。很好,但是我仍然不喜欢这是一个运行时异常(以及类似LSP违规)的事实。
为什么不能支持这些方法?仅仅是因为它们不能轻松地转换成SQL吗?不支持其他哪些IQueryable/IEnumerable扩展方法,某处是否有列表?
最好避免运行时异常。
最佳答案
在MSDN中,Standard Query Operator Translation (LINQ to SQL)-本文包含尚未翻译的运算符的完整列表:
关于c# - 为什么LINQ to SQL不支持查询运算符 'ElementAt'?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5147767/