2013-04-25 20 views
0

我有一個使用Linq的網頁和網站。該頁面包含一個顯示客戶並受List(Of Customer)約束的GridView。使用Linq的值的外鍵

我用下面的代碼來獲得單個客戶

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

然後我通過了所有的客戶ID進入方法將其綁定到我的GridView控件。這顯示所有行,因爲我需要但我有一個問題。

有些列是外鍵顯示爲1,2等通常我過去克服這種方式在不同的項目是通過添加一個子查詢到我的數據層的SQL查詢,但你已經猜測這是Linq,所以我不知道什麼是/不可能的,以便讓外鍵用Linq顯示爲值?

林有點新,所以感謝任何幫助或文章,這將有助於我。

由於

+0

你的問題不清楚。 – 2013-04-25 12:25:40

+0

Linq能夠連接,使用它們連接兩個表。 – jAC 2013-04-25 12:29:23

+0

Erm ....讓外鍵用Linq顯示爲值?所以我想知道是否有辦法讓上面的代碼包含一個外鍵的值(就像在tableadapter中編寫一個子查詢時可以做的那樣) – Computer 2013-04-25 12:31:05

回答

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可能是要顯示的一個外鍵。

該投影的結果是一個IEnumerable<CustomerViewModel>,您可以在網格中顯示。