2014-03-29 21 views
0

我有以下幾點:LINQ的ContainsMany功能

List<int> days = new List<int> {1, 3, 6}; 

我要做到以下幾點:

var result = context.Rosters 
       .Where(r => r.DaysOff.ContainsMany(days)) 
       .ToList(); 

基本上,我想檢查列表中的所有列表中的項目導航可用財產,如ContainsMany()。我怎樣才能做到這一點?

+0

'DaysOff'類型是什麼? –

+0

@ Selman22它也是'int'的列表 –

回答

2

我認爲你正在尋找All方法:

var result = context.Rosters 
      .Where(r => r.DaysOff.All(days.Contains)) 
      .ToList();` 
3

你可以使用Except + Any

.Where(r => !days.Except(r.DaysOff).Any()) 

,因爲它使用一組是有效的。 Any在第一個缺失的元素上休息。

+0

它是實體的linq,所以* set *無關緊要。無論如何,它將被轉換成SQL。 – MarcinJuraszek

+0

@MarcinJuraszek:是的,我首先忽略了L2E標籤,但是'Except'被支持,這是主要的。最後一句與Linq-To-Objects僅有關,但可能對未來的訪問者有用。也就是說,爲了可讀性的原因,我還希望Selman在db驅動的LINQ提供程序的方法。 –