ef linq 中判斷實體中是否包含某集合


我有一個需求,問題有很多標簽,在查詢時,需要篩選包含查詢標簽的一個集合(List<int>),以前的做法是先查詢出來符合查詢標簽條件的標簽id的結果集A,再查詢問題時,加上判斷是否包含該標簽或者查詢問題編號是否在結果集A中,這種方法實在是不得已之舉。
今天經過不斷試驗,發現可以通過使用linq的except來實現一次性查詢出結果。
···
集合.WhereIf(input.Tags != null && input.Tags.Count > 0, q => q.QuestionTags.LongCount()>=input.Tags.Count&& q.QuestionTags.Select(qt => qt.TagId).Except(input.Tags).LongCount()>=0)
···
需要注意的是,首先需要排除問題標簽小於標簽選擇條件個數的記錄,其次使用LongCount()>=0來滿足問題擁有的標簽個數大於選擇條件的情況。最重要的是except的使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM