अद्यतन: यहाँ मैं कुछ हजार DataRows
उस में के साथ एक DataTable
एक similar questionलिंकटेक के साथ एक निश्चित आकार के भाग में डेटाटेबल को तोड़ने का एक साफ तरीका क्या है?
मान लीजिए है।
मैं प्रसंस्करण के लिए छोटी पंक्तियों के टुकड़ों में तालिका को तोड़ना चाहता हूं।
मैंने सोचा कि डेटा के साथ काम करने के लिए सी # 3 की बेहतर क्षमता मदद कर सकती है।
यह वह जगह है कंकाल मैं अब तक है:
DataTable Table = GetTonsOfData();
// Chunks should be any IEnumerable<Chunk> type
var Chunks = ChunkifyTableIntoSmallerChunksSomehow; // ** help here! **
foreach(var Chunk in Chunks)
{
// Chunk should be any IEnumerable<DataRow> type
ProcessChunk(Chunk);
}
क्या ChunkifyTableIntoSmallerChunksSomehow
बदलना चाहिए पर कोई सुझाव?
मुझे वास्तव में दिलचस्पी है कि कोई व्यक्ति सी # 3 टूल्स के साथ ऐसा कैसे करेगा। यदि इन उपकरणों को लागू करने का प्रयास अनुचित है, तो कृपया समझाएं!
अद्यतन 3 (बेडौल संशोधित रूप में मैं वास्तव में टेबल, नहीं ienumerables चाहते हैं, एक विस्तार विधि के साथ जा रहा - धन्यवाद याकूब):
अंतिम कार्यान्वयन: बेडौल संभाल करने
एक्सटेंशन विधि: कि विस्तार विधि का
public static class HarenExtensions
{
public static IEnumerable<DataTable> Chunkify(this DataTable table, int chunkSize)
{
for (int i = 0; i < table.Rows.Count; i += chunkSize)
{
DataTable Chunk = table.Clone();
foreach (DataRow Row in table.Select().Skip(i).Take(chunkSize))
{
Chunk.ImportRow(Row);
}
yield return Chunk;
}
}
}
उदाहरण उपभोक्ता, एक तदर्थ परीक्षण से नमूना उत्पादन के साथ:
class Program
{
static void Main(string[] args)
{
DataTable Table = GetTonsOfData();
foreach (DataTable Chunk in Table.Chunkify(100))
{
Console.WriteLine("{0} - {1}", Chunk.Rows[0][0], Chunk.Rows[Chunk.Rows.Count - 1][0]);
}
Console.ReadLine();
}
static DataTable GetTonsOfData()
{
DataTable Table = new DataTable();
Table.Columns.Add(new DataColumn());
for (int i = 0; i < 1000; i++)
{
DataRow Row = Table.NewRow();
Row[0] = i;
Table.Rows.Add(Row);
}
return Table;
}
}
मैं पेजिंग के लिए इसका उपयोग नहीं कर रहा हूं लेकिन मुझे समांतर एप्लिकेशन को एहसास हुआ। यदि आपको यहां लागू कोई भी अच्छा डुप्लीकेट मिलता है तो कृपया मुझे बताएं और मैं सवाल बंद कर दूंगा। –
आप उपर्युक्त एक विस्तार विधि बनाकर इसे रेखांकित कर सकते हैं। फिर आप var Chunks = तालिका में खंड से उपयोग कर सकते हैं। का चयन करें खंड का चयन करें; –
मुझे यह विचार पसंद है, धन्यवाद –