簡體   English   中英

根據子表中的實體過濾linq查詢中的父/子表(一對多關聯)?

[英]Filter parent/child table (one to many association) in linq query based on entities in child table?

我有一個表(Projects)鏈接到projectID上的projectVersions

projectVersions包含幾列,我希望在這些列上過濾返回的項目(和相關的projectVersions)列表。 例如,有一個“容量”列和一個“國家”列。 我正在一頁上過濾項目列表,我想包括所有關聯的projectVersions容量為750ml的項目,例如一個“法國”國家。

可能是未設置特定的參數,所以我將零傳遞為表示不對其進行過濾。

我猜想這需要某種子查詢,例如當我嘗試執行以下操作時:

  thisList = (From p In dc.tblProjects _  
             Where ((Brand = 0) Or (p.Brand = Brand)) _  
             And ((brandVariant = 0) Or (p.brandVariant = brandVariant)) _  
             And ((sizeCapacity = 0) Or (p.tblProjectVersions.sizeCapacity.xxx = sizeCapacity)) _  
                                 Order By p.dateCreated Ascending _  
                                 Select p).ToList  

它不起作用,因為“ xxx”位是一對多的,希望我指定一個要到達其中的實體的項目,但是我想查詢哪里有任何關聯的版本與條件之一匹配。

如果我理解正確,則問題出在

 Or (p.tblProjectVersions.sizeCapacity.xxx = sizeCapacity)

由於“ tblProjectVersions”是一個集合,並且您要查找“任何”關聯版本與條件匹配的位置,因此請執行以下操作:

 Or (p.tblProjectVersions.Any(Function(t) t.sizeCapacity.xxx = sizeCapacity))

這將檢查表內是否有帶有適當“ sizeCapacity”的元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM