我有一个方法,其中列表无法转换为ienumerable。我如何施展???
public ActionResult Attending()
{
var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value;
var gigs = _context.Attendances.Include(a => a.Gig.Artist).Include(a => a.Gig.Genre).Where(a => a.AttendeeId == userId).ToList();
var viewModel = new GigsViewModel()
{
UpcomingGigs = gigs,
ShowActions = User.Identity.IsAuthenticated,
Heading = "Gigs I'm Attending"
};
return View("Gigs", viewModel);
}
这是我的ViewModel:
public class GigsViewModel
{
public IEnumerable<Gig> UpcomingGigs { get; set; }
public bool ShowActions { get; set; }
public string Heading { get; set; }
}
答案 0 :(得分:0)
您还可以先获取所有与会者,然后选择演出。
IEnumerable<Gig> gigs = _context.Attendances.Where(a => a.AttendeeId == userId).Select(a => a.Gig).ToList();
请注意是否可以有多个类似的演出,那么您可能只需要使用Distinct进行不同的演出:
IEnumerable<Gig> gigs = _context.Attendances.Where(a => a.AttendeeId == userId).Select(a => a.Gig).Distinct().ToList();
详情请见:https://msdn.microsoft.com/en-us/library/bb534803(v=vs.110).aspx
编辑:编辑旧建议,区别并选择添加。
答案 1 :(得分:0)
尝试使用以下代码,AsEnumerable()将完成您的工作
var gigs = _context.Attendances.Where(a => a.AttendeeId == userId).select(a=>
new Gig()
{
property = a.property //assuming property, you can repeat the same for other properties of Gig
}).AsEnumerable();
Linq数据库查询的结果通常是IQueryable,它是从IEnumerable,IQueryable和IEnumerable派生的。
在您的情况下,它是linq数据库查询,因此您需要调用AsEnumerable();
答案 2 :(得分:0)
UpcomingGigs = gigs.Cast<Gig>().ToList()