.net - How to compare list of X to list of Y in C# by using generics? -
i have 2 classes, x , y. both classes have same similar property below.
class x { public string t1 { get; set; } public string t2 { get; set; } public string t3 { get; set; } } class y { public string t1 { get; set; } public string t2 { get; set; } public string t3 { get; set; } public string o1 { get; set; } } i've couple hundreds classes similar x , y; similar structure, , decide create generic class problem.
i have list of x , y , want compare them t1; 1 property, find out element exist on both list, element exist on x , on y.
how can this?
the best thing first create interface contains t1 only. inherit each class x , y interface. can create generic classes or helper classes based on interface.
alternatively, may use reflection, or if use c# 4.0, can use dynamic. classic reflection way slow (large) lists, unless cache method calls, shouldn't take approach. c# 4.0 however, provided method caching through dlr, sufficiently fast in cases.
alternatively (2): when want "right" , want compare lists using standard mechanisms linq, should implement icomparable. can combinee generics create type-safety.
// interface, inherit icomparable public interface ix : icomparable<ix> { string t1 { get; set; } } // create 1 base class class xbase : ix { public string t1 { get; set; } public int compareto(ix obj) { return this.t1.equals(obj.t1); } } // inherit others base class class x : xbase { public string t2 { get; set; } public string t3 { get; set; } } class y : xbase { public string t2 { get; set; } public string t3 { get; set; } public strign o1 { get; set; } } there many other ways. last method above has advantage of once writing logic t1 , compareto, saves clutter , creates clarity in code.
Comments
Post a Comment