2016-06-09 42 views
1

我遇到一個嵌套的Where子句在Razor視圖要求的問題(Asp.net MVC與EF 6):MVC/LINQ - 嵌套其中要求誰不工作

這裏是我的要求(型號爲從控制器的IEnumarable,它具有正確的值):

@foreach (var item in Model.Where(p => (p.user.SellGoods.Where(g => g.IsBuy == false)) != null)) 

我的模式是:

[Key] 
    public String Name { get; set; } 

    public String UrlImage { get; set; } 

    [MinLength(10), MaxLength(500)] 
    public String Description { get; set; } 

    public float Price { get; set; } 

    [DataType(DataType.Date)] 
    public DateTime StartDate { get; set; } 

    [DataType(DataType.Date)] 
    public Nullable<DateTime> EndOfAuction { get; set; } 

    public virtual EnumStrategy Strategy { get; set; } 

    public int UserID { get; set; } 

    public virtual User user { get; set; } 

    public Boolean IsBuy { get; set; } 

    public int CurrentAuctionWinner { get; set; } 

我的用戶模型:

[EmailAddress] 
    public String Mail { get; set; } 

    [Column("SellGoods")] 
    public virtual ICollection<Good> SellGoods { get; set; } 

    [Column("BuyGoods")] 
    public virtual ICollection<Good> BuyGoods { get; set; } 

    public virtual Address ShippingAddress { get; set; } 

    public virtual Address BillingAdress { get; set; } 

    [Range(0.00d, 10.00d)] 
    public double Rate { get; set; } 

從我目前的要求,我得到了所有的好賣一位成員一樣(g => g.IsBuy == false)不工作..

是否有人知道什麼是錯的?

非常感謝!

+0

'凡()'總是返回'IEnumerable的'因此將永遠非空。也許你的意思是'Model.Where(p => p.user.SellGoods.Any(g => g.IsBuy)'(其關聯用戶在其SellGoods集合中至少有一個「Good」未標記爲「IsBuy」) – haim770

回答

0

如果在Where() LINQ擴展方法中不滿足條件,則返回空IEnumerable。所以你的病情從未得到滿足。使用Any()代替Where() != null,就像這樣:

@foeach (var item in Model.Where(p => p.user.SellGoods.Any(g => !g.IsBuy)))