0
以下は私のコードスニペットです。テーブルから10レコードしか表示しません。LinQでの 'Take'拡張メソッドの修正C#
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なので、より良い言葉が存在するかもしれません...) –
あなたは本当に他の質問を見直し、解決した回答を受け入れてください。私はあなたが成功裏に答えられた他の質問をしたのを見ることができます。 – karlphillip