2012-02-22 8 views
0

範囲内とすることができアイテムを見つけるために:LINQクエリは、私は地域に属しているオブジェクトの請求書を持って

public class User : IEntity, INamedType 
    { 
     ... 

     //Navigation properties 
     public virtual ICollection<Area> Areas { get; set; } 

     ... 
    } 

public class Invoice : IEntity, IValidatableObject 
    { 
      ... 

     public virtual int? AreaId { get; set; } 
      ... 
     // Navigation properties 
     public virtual Area Area { get; set; } 
      ... 
    } 

私はまた、複数の領域に属することができ、ユーザオブジェクトを持っています

私が達成したいのは、いずれかの地域に属するすべての請求書をユーザーに渡すことです。私はそれを書いてみましたが、それは右にも、近くではありません。

var invoices = _db.Invoices.Where(x => x.AreaId == user.Areas.Contains(z => z.Id)); 

誰もがこのクエリで私を助けることができますか?

答えて

1
var invoices = _db.Invoices.Where(x => user.Areas.Any(z => z.Id == x.AreaId)); 
0

私はそのような何かが動作するはずだと思う:

var invoices = _db.Invoices.Where(x => user.Areas.Any(z => z.ID == x.AreaId)) 
+0

あわや!我々は同様に考える:-) –

+0

ちょうど秒;)私はそのテキストをクエリの上に書いていない場合...:P – MarcinJuraszek