C# 传递两个查询';s到视图,没有GetEnumerator

C# 传递两个查询';s到视图,没有GetEnumerator,c#,asp.net-mvc,entity-framework,razor,linq-to-entities,C#,Asp.net Mvc,Entity Framework,Razor,Linq To Entities,我有一个由实体框架填充的bookings类,我想对表运行不同的查询,并将它们都返回到视图。我读过关于用一个类来组合它们的文章,但是我很难做到这一点 谢谢你的帮助 错误 foreach语句无法对“ITAPP.Models.Bookings”类型的变量进行操作,因为“ITAPP.Models.Bookings”不包含“GetEnumerator”的公共定义 等级 看法 @model-ITAPP.Models.Bookings @foreach(模型中的var项目){ foreach(item.Boo

我有一个由实体框架填充的bookings类,我想对表运行不同的查询,并将它们都返回到视图。我读过关于用一个类来组合它们的文章,但是我很难做到这一点

谢谢你的帮助

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

等级 看法
@model-ITAPP.Models.Bookings
@foreach(模型中的var项目){
foreach(item.BookedIn中的var inItem)
{
@DisplayFor(modeleItem=>inItem.tblUser.FullName)
@DisplayFor(modelItem=>inItem.BookFrom)
@DisplayFor(modeleItem=>inItem.BookTo)
}
}

您更改了问题。对于此错误,解决方案可能是删除外部foreach循环,如下所示:

@foreach (var item in Model)
因为您的视图模型不是IEnumerable

所以现在的内部循环是

foreach (var inItem in Model.BookedIn)

Bookings
未实现
IEnumerable
,因此无法枚举/迭代该类

对我来说,你想做的事情看起来像是一件乱七八糟的事,但你可以做到:

public class Bookings : IEnumerable<tblBooking>
{
    public List<tblBooking> BookedIn { get; set; }
    public List<tblBooking> BookedOut { get; set; }

    public IEnumerator<tblBooking> GetEnumerator()
    {
        return Union().GetEnumerator();
    }

    private IEnumerable<tblBooking> Union()
    {
        return BookedIn.Union(BookedOut);
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return Union().GetEnumerator();
    }
}
公共类预订:IEnumerable
{
公共列表BookedIn{get;set;}
公共列表bookeout{get;set;}
公共IEnumerator GetEnumerator()
{
返回Union().GetEnumerator();
}
私有IEnumerable并集()
{
返回已在联合体中预订(已预订出);
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
返回Union().GetEnumerator();
}
}

是的,添加了一个新的尝试,我可以使用什么来代替模型来获得结果,我如何访问BookIn和Bookout?谢谢你的模型看起来是正确的。正如我在回答中所写的,您是否尝试移除外部循环?只要删除外部循环并更改内部循环,如果视图返回任何数据,它就会工作。欢迎使用,很高兴它有用)
@foreach (var item in Model)
foreach (var inItem in Model.BookedIn)
public class Bookings : IEnumerable<tblBooking>
{
    public List<tblBooking> BookedIn { get; set; }
    public List<tblBooking> BookedOut { get; set; }

    public IEnumerator<tblBooking> GetEnumerator()
    {
        return Union().GetEnumerator();
    }

    private IEnumerable<tblBooking> Union()
    {
        return BookedIn.Union(BookedOut);
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return Union().GetEnumerator();
    }
}