2つのデータテーブルを結合し、LINQを使用して選択しています。'orderby'行でエラーが発生します。「名前「連絡先」は現在のコンテキストに存在しません」。'customer'変数の列で並べ替えると機能しますが、'contact'変数の列は使用しません。
次に、orderby行を削除し、次のようなラムダ式を使用して順序付けを試みました。
orders.OrderBy(o => (string) o["ContactName"];
「[]を使用したインデックスを'AnonymousType#1'型の式に適用できません。並べ替えのためだけに新しいクラスを作成したくありません。
この種の並べ替えを行う方法についてのアイデア。両方のテーブルの複数の列を使用して並べ替えを行います。
コード:
var orders = (from customer in Customers.AsEnumerable()
join contact in Contacts.AsEnumerable()
on (int) customer["CustomerID"] equals (int) contact["CustomerID"] into outer
from contact in outer.DefaultIfEmpty()
orderby contact["ContactName"]
select new
{
ContactID = (int) contact["ContactID"]),
Name = (string) contact["ContactName"]),
City = (string) contact["City"])
});