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

时间:2010-12-10 05:55:24

标签: c# asp.net-mvc list iqueryable

我是mvc的菜鸟。我正在使用mqc的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'的公共定义”

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

在您的“视图”页面中,您可以简单地继承以下内容:

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

或者在foreach(模型中的变量k)之后,你应该将k作为例如:

的作者
Authors author = (Authors)k;

希望这有帮助!!