在 Linq C# 中获取链接的对象值

Get linked Object values in Linq C#

我下面有一行table。

Table 1: 用户

用户 ID、电子邮件、.....

Table 2: 用户配置文件

ProfileId, UserId,ProfileName,....

FK 在 Users.UserId --> UserProfile.UserId

当我获得如下数据时..它仅检索用户对象值only.I还需要获取用户配置文件对象值。

 var returnObj = _context.Users.Where(x => x.UserId == userId).FirstOrDefault();
 var returnData = _entityMapper.Map<Users, UsersDTO>(returnObj);

如果您使用的是 EF Core,请阅读 the documentation surrounding loading related data

如果您使用的是 EF 6,请阅读 the documentation surrounding loading related data

LINQ-to-SQL 现在真的很老了(它在 10 年前就已经死了)并且是一个过时的产品。如果你确实在使用它,Google for "LINQ to sql loading related data"

按如下方式设计用户和用户配置文件类:

public class User
{

    public int Id { get; set; }
    public string Email { get; set; }
    public UserProfile UserProfile { get; set; }
}

public class UserProfile
{
    public int Id { get; set; }
    public string ProfileName { get; set; }
    public int UserId { get; set; }

    public User User { get; set; }
}

它们是一对一相关的实体,所以

    modelBuilder.Entity<User>()
            .HasOne(_ => _.UserProfile)
            .WithOne(_ => _.User);

最后,加载您的数据:

  var result = _context.Users.Include( _ => _.UserProfile).Select( _ =>  new
        {
            Email = _.Email,
            ProfileName = _.UserProfile.ProfileName,
        }
         ).ToList();

这是基于 EF Core