6
मैंने एक LINQ क्वेरी के साथ एक DataGridView पॉप्युलेट किया है जो एक अनाम प्रकार देता है।DataGridVIew अज्ञात प्रकार के साथ पॉप्युलेट किया गया, फ़िल्टर कैसे करें?
प्रश्न: डेटाग्रिड व्यू को फ़िल्टर करने का कोई मौका जिसका डेटा स्रोत वास्तव में अज्ञात है?
// Setting the datagridview data source
rawDocumentsDataGridView.DataSource = rawTopics
.SelectMany(t => t.Documents)
.Select(d => new
{
DocumentId = d.Id,
Rilevante = d.IsRelevant,
TopicId = d.Topic.Id // foreign key
}).ToList();
// Make it not visibile, waiting for master change
rawDocumentsDataGridView.Visible = false;
// When master selection changed...
void rawTopicsDataGridView_SelectionChanged(object sender, System.EventArgs e)
{
if (rawTopicsDataGridView.CurrentRow == null) return;
// Get selected topic id
int tid = (int) rawTopicsDataGridView.CurrentRow.Cells["TopicId"].Value;
// Filter rawDocumentsDataGridView based on topic id
// WARNING: PSEUDO CODE
var oldDataSource = (List<AnonymousType>)rawDocumentsDataGridView.DataSource;
rawDocumentsDataGridView.DataSource = oldDataSource
.Where(d => d.TopicId == tid);
}
हाँ मैं गलत था, मैं पहले से फ़िल्टर किए गए डेटा को फ़िल्टर करने जा रहा था। ये सही है। लेकिन मैं जानना चाहता हूं कि अनाम प्रकारों के साथ इसे कैसे करना है ... – gremo
@Gremo - वहाँ * एक चाल है जिसे कास्ट-बाय-उदाहरण कहा जाता है, लेकिन यह वास्तव में इसके लायक नहीं है। गंभीरता से; यहां एक अनाम प्रकार का प्रयोग न करें। वे केवल तभी समझते हैं जब डेटा का उत्पादन उसी संदर्भ में किया जाता है और उपभोग किया जाता है (या केवल * प्रतिबिंब जैसे चीजों द्वारा उपयोग किया जाता है)। यह मामला यहां नहीं है। आप प्रतिबिंब के माध्यम से फ़िल्टरिंग भी कर सकते हैं, लेकिन यह धीमा * और * भंगुर है। –
ठीक है, मैं मैदान का पर्दाफाश करूंगा। मैं प्रतिबिंब के बारे में आपसे सहमत हूं ... यह मूल्यवान नहीं है ... – gremo