C# 无法将从数据集检索的数据转换为模型类型ienumerables

C# 无法将从数据集检索的数据转换为模型类型ienumerables,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我总是遇到错误-无法将“MvcMusicStore.Models.MusicStore.GenreDataTable”转换为“System.Collections.Generic.IEnumerable” 我正在下面粘贴我的代码 控制员: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcMusi

我总是遇到错误-无法将“MvcMusicStore.Models.MusicStore.GenreDataTable”转换为“System.Collections.Generic.IEnumerable” 我正在下面粘贴我的代码 控制员:

using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Web;
  using System.Web.Mvc;
  using MvcMusicStore.Models;

  namespace MvcMusicStore.Controllers
  {
  public class StoreController : Controller
  {    

    // GET: /Store/
    public ActionResult Index()
    {
         MvcMusicStore.Models.MusicStoreTableAdapters.GenreTableAdapter ta= new Models.MusicStoreTableAdapters.GenreTableAdapter();
         var genres = ta.GetData().AsEnumerable();
         return View(genres);
    }
我的模型:

namespace MvcMusicStore.Models
{
public partial class Genre
{
    public int GenreId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public List<Album> Albums { get; set; }
}
}

最后一个观点是:

@model IEnumerable<MvcMusicStore.Models.Genre>

@{
ViewBag.Title = "Index";
}

<h3>Browse Genres</h3>
<p>
Select from @Model.Count()
genres:
</p>
<ul>
@foreach (var genre in Model)
{
       <li>@Html.ActionLink(genre.Name,
"Browse", new { genre = genre.Name })</li>

}
</ul>
看起来ta.GetData没有返回可转换为IEnumerable的对象。根据错误消息,ta.GetData似乎正在返回GenreDataTable对象。如果这是正确的,我看到了两件事:

在Razor视图中,模型寻找的是IEnumerable类型对象,而不是GenreDataTable对象。 如果您的GenreDataTable对象已经是一个集合,那么将其作为返回模型,而不是IEnumerable。 如果GenreDataTable不是流派对象的集合,那么您必须在Razor视图中更新所需的模型,或者更新控制器代码以创建所需的类型以匹配模型。
谢谢你@Jwatts1980。我自己解决了。我制作了一个类型对象和一个类型列表。我将从ta.GetData中检索到的值添加到列表中,并将列表返回到视图中,它就工作了。public ActionResult Index{List results=new List;MvcMusicStore.Models.MusicStoreTableAdapters.GenreTableAdapter ta=new Models.MusicStoreTableAdapters.GenreTableAdapter;var genres=ta.GetData.ToList;foreach var v in genres{Genre-Genre=new-Genre;Genre.GenreId=v.GenreId;Genre.Name=v.Name;Genre.Description=v.Details;results.Addgenre;}return Viewresults;}或者,您也可以使用LINQ这样做:var-genres=ta.GetData.Selectv=>new-Genre{GenreId=v.GenreId,Name=v.Name,Description=v.Details}.ToList;