在LINQ中选择特定列作为特定名称?

时间:2011-12-22 17:46:18

标签: c# asp.net sql linq

我正在尝试将我的WebGrid从LINQ填充到SQL。

它包含以下列: 用户名 电子邮件 名字 姓 被批准 IsLockedOut 在线 LastActivityDate LastLoginDate CreationDate

所有这些都来自User对象: dbc.Users

然而,除了名字和姓氏之外的所有内容都是aspnet_Membership和aspnet_User之间的关联,它在我的LINQ to SQL中定义。如何将这些设置为正确的列名?

我试过了:

var accounts = dbc.Users.Select(User => new User
{
      Username => aspnet_Membership.username
}).ToList();

对于用户名但不起作用。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

这将是:

var accounts = dbc.Users.Select(User => new User
{
      Username = aspnet_Membership.username
}).ToList();

否=>对于属性赋值,但假设不是这种情况,你需要的是在多个对象之间“展平”结果集,解决一个实体有多个表的一种方法是使用匿名类来管理它:

var accounts = from u dbc.Users
               let m = dbc.aspnet_Memberships.First(i => i.ProviderUserKey == u.UserKey)
               select new
    {
          Username = m.username,
          FirstName = u.FirstName
    }).ToList();

或者,定义一个视图,并将其添加到模型中。这是拥有共同实体的另一种方式。