[英]Linq expression to filter an a list of entity's collection, and maintain list of entities
[英]How can I check whether an item of an Entity's child collection exists in another collection with LINQ to Entities?
我希望有人從這個問題中抓住了這個主意,但是我不知道如何更好地總結一下。
問題是我嘗試在應用程序中進行簡單搜索。 我有多對多關系中的Question和Tag實體,例如StackOverflow中的實體。
我將標簽ID數組傳遞給我的過濾方法。 它應該返回所有具有此標簽(帶有此ID)的Question實體。 我這樣做是這樣的:
int[] tagIds = { 1, 2, 3};
var questions = myEntities.Questions
.ToList()
.Where(q => tagIds.Intersect(q.Tags.Select(t => t.Id).ToArray()).Any())
.ToList();
一切正常,但是現在我添加了更多的過濾器,並且更多的方法使用了此過濾器,因此我想獲取一個DbQuery對象而不是List。
我嘗試刪除.ToList()表達式,以獲得適當的結果:
int[] tagIds = { 1, 2, 3};
var questions = myEntities.Questions
.Where(q => tagIds.Intersect(q.Tags.Select(t => t.Id).ToArray()).Any());
不幸的是,我得到一個例外,指出LINQ無法識別.ToArray()方法。 誰能給我一個更好的主意如何實現這一目標?
ToArray()方法甚至在
.Where(q => tagIds.Intersect(q.Tags.Select(t => t.Id).ToArray())
因為Intersect只需要Select已經返回的IEnumerable,而不一定是數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.