मुझे कुछ प्रतिक्रिया चाहिए कि हम एक सामान्य कार्य कैसे लिख सकते हैं जो दो सूचियों की तुलना करने में सक्षम होगा। सूची में वर्ग वस्तुएं होती हैं और हम एक सूची के माध्यम से फिर से शुरू करना चाहते हैं, एक ही आइटम को दूसरी सूची में ढूंढना और किसी भी अंतर की रिपोर्ट करना चाहते हैं।मतभेदों के लिए दो सूचियों की तुलना करें
हमारे पास कक्षाओं की तुलना करने के लिए पहले से ही एक तरीका है, इसलिए हमें दो सूचियों से विधि (नीचे दिखाया गया) कैसे फ़ीड कर सकते हैं इस पर प्रतिक्रिया की आवश्यकता है।
उदाहरण के लिए, हमारे पास एक सरल "कर्मचारी" वर्ग है जिसमें तीन गुण, नाम, आईडी, विभाग हैं। हम सूची और दूसरी सूची के बीच मतभेदों की रिपोर्ट करना चाहते हैं।
नोट:
दोनों सूचियों में हमेशा समान संख्या में आइटम होंगे।
जैसा ऊपर बताया गया है, हमारे पास एक सामान्य विधि है जिसका उपयोग हम दो वर्गों की तुलना करने के लिए करते हैं, हम सूची को पूरा करने के लिए इस विधि को कैसे शामिल कर सकते हैं, यानी सूची के माध्यम से लूप और कक्षाओं को जेनेरिक विधि में फ़ीड करें। ... लेकिन हम नीचे दी गई विधि को पास करने के लिए दूसरी सूची में समकक्ष वर्ग कैसे प्राप्त करते हैं;
public static string CompareTwoClass_ReturnDifferences<T1, T2>(T1 Orig, T2 Dest)
where T1 : class
where T2 : class
{
// Instantiate if necessary
if (Dest == null) throw new ArgumentNullException("Dest", "Destination class must first be instantiated.");
var Differences = CoreFormat.StringNoCharacters;
// Loop through each property in the destination
foreach (var DestProp in Dest.GetType().GetProperties())
{
// Find the matching property in the Orig class and compare
foreach (var OrigProp in Orig.GetType().GetProperties())
{
if (OrigProp.Name != DestProp.Name || OrigProp.PropertyType != DestProp.PropertyType) continue;
if (OrigProp.GetValue(Orig, null).ToString() != DestProp.GetValue(Dest, null).ToString())
Differences = Differences == CoreFormat.StringNoCharacters
? string.Format("{0}: {1} -> {2}", OrigProp.Name,
OrigProp.GetValue(Orig, null),
DestProp.GetValue(Dest, null))
: string.Format("{0} {1}{2}: {3} -> {4}", Differences,
Environment.NewLine,
OrigProp.Name,
OrigProp.GetValue(Orig, null),
DestProp.GetValue(Dest, null));
}
}
return Differences;
}
कोई सुझाव या विचारों की सराहना की?
संपादित करें: .NET 2.0 को लक्षित करना LINQ प्रश्न से बाहर है।
lol ... कोई, किसी उच्च स्तरीय, सिस्टम के महत्वपूर्ण आवेदन :-) गंभीरता से, एक छोटे से शौक एप्लिकेशन में इस कार्यक्षमता ... अपने सभी सीखने को लागू करने की कोशिश कर रहा। –
बराबर लंबाई की सूचियां हैं? – Noldorin
हाँ, सूचियां बराबर लंबाई –