使用LINQ查询从数据库返回项目列表

时间:2019-03-15 18:20:48

标签: c# asp.net-mvc linq model-view-controller

我希望编写一个非常简单的LINQ查询以列出数据库中的项目。这是我的模型的样子:

public class UsersContext : DbContext
  {
    public UsersContext()
      : base("DefaultConnection")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
    public DbSet<Membership> Membership { get; set; }
    public DbSet<Role> Roles { get; set; }

  }

  [Table("UserProfile")]
  public class UserProfile
  {
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string Email { get; set; }
  }

  [Table("webpages_Roles")]
  public class Role
  {
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int RoleId { get; set; }
    public string RoleName { get; set; }
  }

这是我的控制人:

 public class AccountController : Controller
 {

  public ActionResult UserList(string username)
  {
    using (UsersContext db = new UsersContext())
    {
        var username = UserProfile.UserNames.ToList()
     ;
        return View(username)
    }

  }  

有人可以告诉我此查询应如何工作。我真的希望能够以列表格式列出视图中的所有用户名

查看:

  @model IEnumerable<Comtrex_ICU.Models.UserProfile>


@{
    ViewBag.Title = "UserTable";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2 class="admin-home-link orange-titles">@Html.ActionLink("User 
Information", "AdminIndex")</h2>
<p>&nbsp;</p>

@foreach (var item in Model)
{

        <p></p>@Html.DisplayFor(modelItem => item.UserName)

}

2 个答案:

答案 0 :(得分:1)

db.UserProfiles将返回UserProfiles表中的所有行

因此,您可以尝试var userProfiles = db.UserProfiles.ToList();获取此行上的列表,并且模型应为@model IEnumerable<Comtrex_ICU.Models.UserProfile>

答案 1 :(得分:0)

public class AccountController : Controller
 {

  public ActionResult UserList(string username)
  {
    using (UsersContext db = new UsersContext())
    {
        var username = db.UserProfiles.Select(x => x.UserName ).ToList();
        return View(username)
    }    

  }