简体   繁体   English

LINQ Where子句多个条件

[英]LINQ Where clause Multiple conditions

Im trying to get all the data rows that contain a certain set of data. 我试图获取包含某组数据的所有数据行。

In my database i have some values, including start and length. 在我的数据库中,我有一些值,包括开始和长度。

I have an array that contains integers called startTimes and another called endTimes. 我有一个数组,其中包含名为startTimes的整数和另一个名为endTimes的整数。

I need a where clause that would return the records that have a start value contained in startTimes, OR start+length contained in endTimes. 我需要一个where子句来返回包含在startTimes中的起始值的记录,或者包含在endTimes中的start + length。

Is there any way to do this? 有没有办法做到这一点?

Thanks 谢谢

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

will something like this suffice? 会是这样的吗?

var data = collection.Where(
        t => startTimes.Contains(t.theTime) || 
        endTimes.Contains(t.theTime + theLength));

i have an array startTime=[1,3,4] and an array endTime=[2,4,5] lets say. 我有一个数组startTime = [1,3,4]和一个数组endTime = [2,4,5]让我们说。 I need to see if any of those values match my records? 我需要看看这些值是否符合我的记录? I dont think the above would do the job 我不认为上面会做这个工作

To check if you have value in Array of int, Use the Contains Method: 要检查您是否在Array of int中有值,请使用Contains方法:

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

Syntax: ARRAY.Contains(ID_TO_SEARCH) 语法: ARRAY.Contains(ID_TO_SEARCH)

it returns a boolean: 它返回一个布尔值:

var list = new List<int> {1,2,3,4,5};
var intVar = 4;
var exists = list.Contains(intVar);
proposedRequest.Where(pr => startTimesArray.Contains(pr.start) || endTimesArray.Contains(pr.start + pr.length));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM