将 IQueryable 转换为列表并使用 foreach 进行迭代

发布于 2024-10-07 09:43:42 字数 1225 浏览 7 评论 0原文

我是 mvc 的菜鸟。我正在使用 mvc 和 linq2sql 的存储库模式 只是做一些测试来清楚地了解周围的一切。 我正在尝试从作者表中输出作者。

public class AuthorsRepository : IAuthorRepository
{
    private Table<BK_Author> _authorsTable;

    public IQueryable<BK_Author> Authors
    {

        get { return _authorsTable.AsQueryable<BK_Author>(); }

    }

控制器中

public class AuthorsController : Controller
{
    private IAuthorRepository _authorRepo;

    public AuthorsController()
    {
        string connectionString = "";
        _authorRepo = new AuthorsRepository(connectionString);
    }

    public ViewResult List()
    {            
        return View(_authorRepo.Authors.ToList());
    }

在视图部分的

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
<div class="item">
    <% foreach (var k in Model)
       { %>
        <%: k.Author_Name %>
        <%: k.Author_email %>
        <%: k.Author_phonenumber %>
        <%: k.Author_Website %>
    <% }%>         
</div>

当我尝试运行它时,出现编译器异常

“foreach 语句无法对“BK_Author”类型的变量进行操作,因为“BK_Author”不包含“GetEnumerator”的公共定义”

I am a noob to mvc.I am using a repository pattern with linq2sql using mvc
Just doing some test to get a clear idea everything around the it.
I am trying to output authors from author table.

public class AuthorsRepository : IAuthorRepository
{
    private Table<BK_Author> _authorsTable;

    public IQueryable<BK_Author> Authors
    {

        get { return _authorsTable.AsQueryable<BK_Author>(); }

    }

in the controllers

public class AuthorsController : Controller
{
    private IAuthorRepository _authorRepo;

    public AuthorsController()
    {
        string connectionString = "";
        _authorRepo = new AuthorsRepository(connectionString);
    }

    public ViewResult List()
    {            
        return View(_authorRepo.Authors.ToList());
    }

on the view part

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
<div class="item">
    <% foreach (var k in Model)
       { %>
        <%: k.Author_Name %>
        <%: k.Author_email %>
        <%: k.Author_phonenumber %>
        <%: k.Author_Website %>
    <% }%>         
</div>

When I try to run it I am having a compiler exception

"foreach statement cannot operate on variables of type 'BK_Author' because 'BK_Author' does not contain a public definition for 'GetEnumerator'"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

多情出卖 2024-10-14 09:43:42

页面的模型以某种方式设置为 BK_Author 的对象,而不是 AuthorsRepository 的对象。将其设置为 AuthorsRepository 并使用其 Authors 属性访问作者列表。

Page's model is somehow set to an object of BK_Author and not of AuthorsRepository. Set it to AuthorsRepository and access list of authors using its Authors property.

薄凉少年不暖心 2024-10-14 09:43:42

在您的视图页面中,您可以简单地继承这样的内容:

Inherits="System.Web.Mvc.ViewPage<IEnumerable<Authors>>"

或者在 foreach(var k in Model) 之后,您应该将 k 命名为作者,例如:

Authors author = (Authors)k;

希望这有帮助!

In your View page, you could simply inherit something like this:

Inherits="System.Web.Mvc.ViewPage<IEnumerable<Authors>>"

or after foreach(var k in Model) you should case k to Authors like:

Authors author = (Authors)k;

Hope this help!!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文