0
下面是我的代碼片段,我想從一個表中只顯示10條記錄。在LinQ C中修復'Take'擴展方法#
AdventureWorksDataContext adc = new AdventureWorksDataContext();
var query1 = from customers in adc.Customers
orderby (customers.FirstName).Take(10)
select new
{
customers.FirstName,
customers.LastName,
customers.CustomerAddresses
};
foreach (var v in query1) -> Line 23
{
Console.Write(v.FirstName);
Console.Write(" ");
Console.Write(v.LastName);
Console.Write(" ");
Console.Write(v.CustomerAddresses);
}
我得到以下運行時錯誤:
Unhandled Exception: System.InvalidOperationException: Cannot order by type 'System.Collections.Generic.IEnumerable`1[System.Char]'.
at System.Data.Linq.SqlClient.QueryConverter.VisitOrderBy(Expression sequence, LambdaExpression expression, SqlOrderType orderType)
at System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall(Method CallExpression mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitMethodCall(MethodCallExpres
sion mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
at System.Data.Linq.SqlClient.QueryConverter.VisitSelect(Expression sequence,
LambdaExpression selector)
at System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall(Method
CallExpression mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitMethodCall(MethodCallExpres
sion 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, SqlNod
eAnnotations annotations)
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider
.Execute(Expression query)
at System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.Get
Enumerator()
at LabAssignment4Part2.AdventureWorks.Main(String[] args) in E:\AdventureWorks.cs:line 23
我想我不實現以正確的方式採取的方法。
請幫助我。
你不是在執行Take方法,而是調用它。 (儘管由於這是Linq-to-sql,可能會有更好的詞......) – 2012-03-29 21:09:56
你應該真的開始檢查你的其他問題並接受解決它們的答案。我可以看到你問了其他已成功解答的問題。 – karlphillip 2012-04-07 16:04:21