我是MVC的新手。在我的应用程序中,我试图根据不同的参数搜索数据。数据存储在数据库中,并使用Entity Framework访问db。因为我需要将来自多个模型的数据显示到一个视图中,所以我决定使用ViewModel将两个类绑定在一起并显示数据。 这是我的代码 的模型
[Table("User")]
public partial class User
{
[Key]
public int UserId { get; set; }
[StringLength(50)]
public string FirstName { get; set; }
[StringLength(50)]
public string LastName { get; set; }
[StringLength(50)]
public string Email { get; set; }
public virtual LicenseTypeMaster LicenseTypeMaster { get; set; }
}
[Table("tblLicenseTypeMaster")]
public partial class LicenseTypeMaster
{
Key]
public int LicenseTypeId { get; set; }
[StringLength(100)]
public string LicenseTypes { get; set; }
public int? LicenseCount { get; set; }
}
视图模型
public class UserLicenseTWRBinder
{
VSLicenseDb db = new VSLicenseDb();
public IEnumerable<User> GetUserDetail(string searchBy, string searchValue)
{
List<User> usr = new List<User>();
public List<User> usr { get; set; };
var query = (from u in db.Users
join ut in db.UserLicenseTypes
on u.UserId equals ut.UserId
join tl in db.ToolsLicenseTypes
on ut.ToolLicenseTypeId equals tl.ToolLicenseTypeId
join tm in db.LicenseTypeMasters
on tl.LicenseTypeId equals tm.LicenseTypeId
where u.FirstName == searchBy
select new
{
FirstName = u.FirstName,
LastName = u.LastName,
Email = u.Email,
LicenseAllocated. = tm.LicenseTypes
}).ToList();
return query;
}
}
我希望该方法返回FirstName,LastName&amp;来自UserTypeMaster模型的用户模型和LicenseType的电子邮件。我不确定将两个模型中的哪些属性包含到ViewModel中,以便它只能呈现所需的数据。也是方法的返回类型,以便可以在控制器中访问它,然后可以传递给视图。
请帮忙。
答案 0 :(得分:0)
您需要创建一个新类Say UserPoco,其中包含要提取的所有字段
public class UserPoco
{
public string FirstName {get;set}
public string LastName {get;set}
public string Email{get;set}
public string LicenseAllocated {get;set}
}
该方法应如下所示
public IEnumerable<UserPoco> GetUserDetail(string searchBy, string searchValue)
{
List<User> usr = new List<User>();
public List<User> usr { get; set; };
var query = (from u in db.Users
join ut in db.UserLicenseTypes
on u.UserId equals ut.UserId
join tl in db.ToolsLicenseTypes
on ut.ToolLicenseTypeId equals tl.ToolLicenseTypeId
join tm in db.LicenseTypeMasters
on tl.LicenseTypeId equals tm.LicenseTypeId
where u.FirstName == searchBy
select new UserPoco
{
FirstName = u.FirstName,
LastName = u.LastName,
Email = u.Email,
LicenseAllocated. = tm.LicenseTypes
}).ToList();
return query;
}
这就是我要做的。您可以根据需要向poco类添加任意数量的字段。 希望有所帮助。