C# 如何在MVC中选择Viewmodel

C# 如何在MVC中选择Viewmodel,c#,asp.net-mvc,linq,entity-framework-4,C#,Asp.net Mvc,Linq,Entity Framework 4,这是我的桌子,我从中得到我的朋友名单。为此,我的模型如下所示: [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid UserRelationshipId { get; set; } public string Id { get; set; } public string SecondUserId { get; set; } // 0 for Request pending // 1 for Reques

这是我的桌子,我从中得到我的朋友名单。为此,我的模型如下所示:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid UserRelationshipId { get; set; }
public string Id { get; set; }
public string SecondUserId { get; set; }

// 0 for Request pending
// 1 for Request Accepted
// 2 for Declined
// 3 For Blocked
public int Status { get; set; }
public string ActionUserId { get; set; } // who have taken action against the status

[ForeignKey("Id")]
public virtual ApplicationUser Users { get; set; }
现在我正在使用一个查询,我必须在其中获取我的朋友列表:

string LoginId = User.Identity.GetUserId();
var Searchuser = from u in db.UserRelationships where u.Id == LoginId && u.Status == 1                            
                 select new UserViewModel
                 {
                     Fname = u.Users.FirstName,
                     Lname = u.Users.LastName,
                     Gender = u.Users.Gender,
                     Id = u.Id,
                     CurrentCity = u.Users.CurrentCity
                 };

我正在获取自己的数据,因为我已经将我的LoginId与id进行了比较。问题是如何获取SecondUserId的数据?对它的查询是什么?我可以通过使用联接查询来实现这一点,但我想避免它。没有联接查询有什么办法吗?

您可以通过执行第二个查询来实现这一点:

string LoginId = User.Identity.GetUserId();

// Get the user relationship entity
var userRelationship = (from u in db.UserRelationships
                       where u.Id == LoginId && u.Status == 1
                       select u).FirstOrDefault();

// Get the second user, using the values in the user relationship entity
var secondUser = db.Users.Find(userRelationship.SecondUserId);

// Generate the view model
var viewModel =  new UserViewModel()
                 {
                     Fname = userRelationship.Users.FirstName,
                     Lname = userRelationship.Users.LastName,
                     Gender = userRelationship.Users.Gender,
                     Id = userRelationship.Id,
                     CurrentCity = userRelationship.Users.CurrentCity
                 };

请你把你的问题说清楚一点,我很困惑。@Coulton我在模型中提到过,请检查是否有属性seconduserID,它是向我发送friendRequest的id,反之亦然。因此,你想在我的搜索中得到该id的列表,其中id将是loginuserIdSorry,我错过了。不过我还是不明白这个问题:(@Coulton忘了你只需检查模型,其中id是loginId和seconduserId,他们现在是我的朋友,如何从db.users获取数据,因为我已经将id作为外键。只需进行第二次查询?我得到的结果与视图模型返回logiuserid ony的详细信息相同