मुझे वस्तुओं की एक धारा को वस्तुओं के बैचों की एक धारा में बदलने की जरूरत है, उन्हें प्रतिक्रियाशील एक्सटेंशन का उपयोग करके एक संपत्ति मूल्य के आधार पर समूहित करना:
class Record
{
public string Group;
public int Value;
}
IObservable<List<Record>> Process(IObservable<Record> source, TimeSpan timeout)
{
// ...
}
इनमें से कोई एक होने पर एक बैच समाप्त हो जाता है और आउटपुट स्ट्रीम में भेज दिया जाता है:
- स्रोत स्ट्रीम से एक नई वस्तु आती है और इसका
Group
मान पिछले मान से भिन्न होता है - स्रोत स्ट्रीम में
N
सेकंड के लिए कोई नई वस्तु नहीं है
उदाहरण के लिए, यदि a1
का अर्थ new Record { Group = "a", Value = 1}
है:
input: -a1-a2-a3-b1-b2-
output: -[a1, a2, a3]-[b1, b2]-
input: -a1-a2----------a3-
output: -[a1, a2]-------[a3]-
GroupByUntil
, Debounce
, Buffer
, और Timer
के विभिन्न संयोजनों का कोई फायदा नहीं हुआ। यह कैसे किया जाता है?
1 उत्तर
चाल GroupByUntil
के साथ Throttle
का उपयोग करने की थी:
IObservable<List<Record>> Process(IObservable<Record> source, TimeSpan timeout)
{
return source.GroupByUntil(x => x.Group, g => g.Throttle(timeout))
.SelectMany(x => x.ToList());
}
संबंधित सवाल
नए सवाल
c#
C # (उच्चारण "तेज देखें") Microsoft द्वारा विकसित एक उच्च स्तरीय, सांख्यिकीय रूप से टाइप किया हुआ, बहु-प्रतिमान प्रोग्रामिंग भाषा है। C # कोड आमतौर पर Microsoft के .NET परिवार के टूल और रन-टाइम को लक्षित करता है, जिसमें .NET फ्रेमवर्क, .NET कोर और Xamarin अन्य शामिल हैं। C # या C # के औपचारिक विनिर्देश में लिखे गए कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें।