LINQ Where子句 多个条件

3

我试图获取包含特定一组数据的所有数据行。

在我的数据库中,我有一些值,包括起始和长度。

我有一个包含整数的数组称为startTimes,另一个称为endTimes。

我需要一个where子句,可以返回具有包含在startTimes中的起始值或start+length包含在endTimes中的记录。

有没有办法做到这一点?

谢谢

    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);

@DawoodAwan 上面添加了^^。 - mwild
3个回答

2
这个够用吗?
var data = collection.Where(
        t => startTimes.Contains(t.theTime) || 
        endTimes.Contains(t.theTime + theLength));

我有一个数组startTime=[1,3,4]和一个数组endTime=[2,4,5]。假设我需要查看是否有任何一个值与我的记录匹配?我不认为上面的代码可以完成这个任务,所以如果我可以使用(m=>m.startTime.isIn(startTimes)... 那么是可以的,但我不认为这是可能的。 - mwild
@user2976358 添加了一个包含Contains的例子,但是我不清楚你的变量/标识符。 - Mackan

2
我有一个数组startTime=[1,3,4]和一个数组endTime=[2,4,5],我需要查看这些值是否与我的记录匹配。我认为上述方法无法完成此任务。
要检查在整数数组中是否存在某个值,请使用Contains方法:
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);

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

看起来好像有人比我先完成了,哈哈哈。 - Donald.Record

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接