Nie jest to łączna delta, ale delta każdego elementu. Oto kod, aby wyjaśnić, co mam na myśli:Czy mogę uzyskać deltę dwóch IEnumerables w LINQ?
var deltaTotals = _deltaEnumerable.Select(a => a.Amount).ToList();
var oldTotals = _totalsEnumerable.Select(d => d.Amount).ToList();
// trigger change in _totalsEnumerable
// ** can LINQ do the lines below
var newTotals = totalsEnumerable.Select(d => d.Amount);
for (var i = 0; i < 7; i++) {
var newAmount = oldTotals[i] - deltaTotals[i];
Assert.That(newTotals.ElementAt(i), Is.EqualTo(newAmount));
}
To ostatnie cztery linie kodu, które wydają się jakby tam może być bardziej elegancki sposób to zrobić w LINQ jakoś.
Cheers,
Berryl
Cool. Zip nie wydaje się być najbardziej intencją, która ujawnia mi imię, ale przynajmniej jest krótka. Kiedy pierwszy raz zobaczyłem twoją odpowiedź, pomyślałem, że to jest pobieranie! Pozdrawiam – Berryl
To prawda, że nie jest to najbardziej rozpoznawalna nazwa na świecie. Myślę, że Eric Lippert ukuł termin: http://blogs.msdn.com/ericlippert/archive/2009/05/07/zip-me-up.aspx. Tak czy inaczej, jest to przydatne rozszerzenie. :) – Aaronaught
nazwa pochodzi od języków funkcjonalnych. Nazywa się to tak, ponieważ działa jak zamek błyskawiczny. Domyślnie powinno to zrobić coś w stylu krotek, gdzie pierwszy element pochodzi z listy 1, drugi z 2. – flq