0

我有一个使用 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 显示为值是什么/不可能?

我对 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可能是您要显示的那些外键之一。

投影的结果是IEnumerable<CustomerViewModel>可以在网格中显示的。

于 2013-04-25T21:03:59.997 回答