1

私は 2 つのコレクションを持ってます。コレクションInvitationUserAllowedTimesには、コレクションInvitedUserAllowedTimes.Timesがあります

コレクションInvitedUserAllowedTimes.Times の値は、TimeID = 1、TimeID = 2、TimeID = 3、TimeID = 4、TimeID = 5、TimeID = 6 です。

コレクションmeeting.AllowedTimesには、値 TimeID = 2、TimeID = 3、TimeID = 4 があります。

私は、すべてのmeeting.AllowedTimes TimeIDs を含む、 invitedUserAllowedTimesのすべてのレコードから選択したいと考えています。私は次のことをしようとします:

var times = (
    from i in invitedUserAllowedTimes 
    where i.Times.All(p => meeting.AllowedTimes.Any(k=>k.TimeID == p.TimeID))
    select i).ToList();

しかし、レコードを取得しません。なんで?私のコードで間違っているのは何ですか?

4

2 に答える 2

1

すべての時間が にあるすべてのinvitedUserAllowedTimes場所を返すように要求しているため、何も返されません。TimeID 1、5、または 6 がないため、この例では返されません。meeting.AllowedTimesmeeting.AllowedTimes

代わりに、これを行う必要があります。

var times = (
    from i in invitedUserAllowedTimes 
    where meeting.AllowedTimes.All(k=> i.Times.Contains(k.TimeID))
    select i).ToList();

または、拡張メソッドを使用して:

var times = invitedUserAllowedTimes.Where(i => meeting.AllowedTimes.All(k => i.Times.Contains(k.TimeID)).ToList();
于 2013-03-01T15:20:19.947 に答える
1

Try this:

var times = (from i in invitedUserAllowedTimes 
             where meeting.AllowedTimes.All(k => i.Times.Contains(k.TimeID))
             select i).ToList();
于 2013-03-01T15:19:15.457 に答える