2015-04-28 251 views
3

我試圖獲取包含特定數據集的所有數據行。LINQ Where子句多個條件

在我的數據庫中,我有一些值,包括開始和長度。

我有一個數組,其中包含稱爲startTimes的整數,另一個稱爲endTimes。

我需要一個where子句,它將返回startTimes中包含的開始值,endTimes中包含的OR + start + length的記錄。

有沒有辦法做到這一點?

感謝

IQueryable<request> proposedRequest = db.requests.Include(r => r.rooms); 
     proposedRequest = proposedRequest.Where(r=>r.booked.Equals(1)); 
     proposedRequest = proposedRequest.Where(r=>r.roundID.Equals(roundID))8; 
     proposedRequest = proposedRequest.Where(r=>r.day.Equals(day)); 
     int[] startTimes; 
     int[] endTimes; 
     for(var q=0;q<time;q++){ 
      startTimes[startTimes.Length] = time + q; 
      endTimes[endTimes.Length] = time + q + 1; 
     } 
     proposedRequest = proposedRequest.Where(//what goes in here); 
+0

後您r代碼。 –

+0

@DawoodAwan在上面添加^^ – mwild

回答

2

會像這樣就夠了?

​​
+0

我有一個數組startTime = [1,3,4]和數組endTime = [2,4,5]可以說。我需要查看這些值是否與我的記錄匹配?我不認爲上面會做這項工作,所以如果我能做到(m => m.startTime.isIn(startTimes)...那麼是的,但我不認爲這是可能的 – mwild

+0

@ user2976358添加了'Contains'示例,但我不清楚你的變量/標識符 – Mackan

+0

可愛,謝謝:)作品一個款待 – mwild

2

我有一個數組STARTTIME = [1,3,4]和數組結束時間= [2,4,5]讓 說。我需要查看這些值是否與我的記錄匹配?我不 覺得上面會做的工作

要檢查您是否在爲int數組有值,可以使用包含方法:

proposedRequest = proposedRequest.Where(s => startTimes.Contains(s.INT_ID) 
             || endTimes.Contains(s.INT_ID)); 

語法:ARRAY.Contains(ID_TO_SEARCH)

它返回一個布爾值:

var list = new List<int> {1,2,3,4,5}; 
var intVar = 4; 
var exists = list.Contains(intVar); 
+0

完美,謝謝你 – mwild

1
proposedRequest.Where(pr => startTimesArray.Contains(pr.start) || endTimesArray.Contains(pr.start + pr.length)); 
+0

看起來像有人打我哈哈哈。 –