0

Linq を使用した Web ページとサイトがあります。このページには、顧客を表示し、List (Of Customer) によってバインドされたグリッドビューが含まれています。

以下のコードを使用して、単一の顧客を取得します

    Public Function GetCustById(ByVal id As Integer) As Customer Implements ICustomerService.GetCustById
        Return DataContext.Customers.SingleOrDefault(Function(c) c.Id = id)
    End Function

次に、すべての顧客 ID をメソッドに渡すことで、グリッドビューにバインドします。これにより、必要に応じてすべての行が表示されますが、1 つ問題があります。

外部キーであるいくつかの列は1、2などとして表示されます。通常、過去にこれを克服した方法は、異なるプロジェクトで、データレイヤーのSQLクエリにサブクエリを追加することですが、ご想像のとおり、これはLinqですLinqを使用して外部キーを値として表示するために、何が可能/不可能なのかわかりませんか?

私はLinqに少し慣れていないので、これに役立つヘルプや記事をいただければ幸いです。

ありがとう

4

1 に答える 1

1

ビューをエンティティ クラス (または必要に応じてドメイン クラス) から分離することをお勧めします。したがって、たとえば、ビュー モデル クラスを定義し、それにCustomerViewModel射影Customerします。

顧客のリストを取得する方法はわかりませんが (ID で個々の顧客を取得するのは非常に非効率的です)、どこかにIEnumerable<Customer>. と呼びましょうcustomers。今、あなたはすることができます

From c in customers_
Select New CustomerViewModel With { Name = c.Name, ... }

しかし、今CustomerViewModelでは、にないプロパティを追加できますCustomer! 例えば

Select New CustomerViewModel
       With { Name = c.Name, TypeName = c.CustomerType.Name }

これCustomerTypeは、表示したい外部キーの 1 つになる可能性があります。

投影の結果はIEnumerable<CustomerViewModel>、グリッドに表示できる です。

于 2013-04-25T21:03:59.997 に答える