Не беспокойтесь, если вы не поняли, что вопрос может быть, я не очень хорошо выражаюсь, поэтому приведу пример. Учитывая два списка:Не следует ли «переменная диапазона» из объединения возвращать список со всеми членами, которые являются одинаковыми?
class PlayingNote {
public byte actuator;
public int dropTime;
public PlayingNote() {
}
public PlayingNote(byte actuatorParam, int dropTimeParam) {
actuator = actuatorParam;
dropTime = dropTimeParam;
}
}
List<PlayingNote> activationNotesTmp = new List<PlayingNote>();
activationNotesTmp.Add(new PlayingNote(32, 0));
activationNotesTmp.Add(new PlayingNote(16, 125));
activationNotesTmp.Add(new PlayingNote(12, 250));
activationNotesTmp.Add(new PlayingNote(43, 500));
List<PlayingNote> desactivationNotesTmp = new List<PlayingNote>();
desactivationNotesTmp.Add(new PlayingNote(223, 125));
desactivationNotesTmp.Add(new PlayingNote(239, 250));
desactivationNotesTmp.Add(new PlayingNote(243, 375));
desactivationNotesTmp.Add(new PlayingNote(212, 625));
И запрос:
var sameDTNotes =
(from an in activationNotesTmp
join dn in desactivationNotesTmp on an.dropTime equals dn.dropTime into sameDt
from s in sameDt
select new PlayingNote {
dropTime = an.dropTime,
actuator = (byte)(an.actuator & s.actuator)
}).ToList();
Не следует ли «» sameDt переменной диапазона в запросе содержится список всех пользователей, которые являются такими же? в примере первый список в «sameDt» IEnumerable должен содержать {16, 223} и второй список {12, 239}? поэтому я мог бы сделать селектор, как показано ниже, и сравнить участников в списке?
public static byte AndBynary<T>(this IEnumerable<T> numbers, Func<T, byte> selector) {
return (from num in numbers select selector(num)).AndBynary();
}
public static byte AndBynary(this IEnumerable<byte> source) {
byte retaux = 0xff;
foreach (byte item in source) {
retaux &= item;
}
return retaux;
}
Вопрос заключается в том, как я могу получить список, содержащий пересечение с тем же droptime и использовать AndBinary селектор «слияния» привода?
окончательный список, содержащий два PlayingNotes: PlayingNote (16, 125) PlayingNote (12, 250)
Большое спасибо.
Что 'PlayingNode' выглядит? Я имею в виду, какое поле имеет dropTime и что такое привод? –
Спасибо Арину за быстрый ответ. PlayingNote выглядит так: \t класс PlayingNote { \t \t общественный исполнительный механизм байта; \t \t public int dropTime; \t \t общественного PlayingNote() { \t \t} \t \t общественного PlayingNote (байт actuatorParam, Int dropTimeParam) { \t \t \t привод = actuatorParam; \t \t \t dropTime = dropTimeParam; \t \t} \t} –
Позвольте мне изменить вопрос, чтобы вы лучше визуализировали –