我有兩個不是來自同一類型的泛型列表,但它們的類型在公共屬性(Date_Debut,Date_Fin,NombreJours)中有一些屬性。我想檢查這兩個列表是否考慮到它們的共同屬性而具有相同的元素。任何建議檢查兩個不同的泛型類型列表是否具有相同的元素
0
A
回答
0
var listA = new List<YourType1>();
var listB = new List<YourType2>();
foreach (var elementA in listA)
{
if (listB.Any(elementB => elementA.Date_Debut == elementB.Date_Debut &&
elementA.Date_Fin== elementB.Date_Fin &&
elementA.NombreJours == elementB.NombreJours))
{
/// elementA and element b is equal
}
}
如果你不想把一個條件,即長,比你可以重寫你的類Equals
方法。然後,只需使用該Equals
方法來比較您的對象。
1
你可以通過簡單的方式或困難的方式做到這一點。困難的方法是使用反射來拉動具有相同名稱和類型的屬性並比較它們的值。這並不難說,但它涉及更多,更密集。您也可以使用這兩個類來手動輸入比較結果。它可以工作,但如果你認爲你可能有更多的類共享這些屬性,它就不可重用。
或者你可以共享一個接口。
public interface ISharedProperty
{
DateTime Date_Debut {get;set;}
DateTime Date_Fin {get;set;}
int NombreJours {get;set;}
}
然後有一個IEqualityComparer<ISharedProperty>
或擴展方法(或兩者)
public class SharedPropertyEqualityComparer : IEqualityComparer<ISharedProperty>
{
public bool Equals(ISharedProperty x, ISharedProperty y)
{
// Add some logic to check for x and y null value
return x.Date_Debut == y.Date_Debut &&
x.Date_Fin == y.Date_Fin &&
x.NombreJours == y.NombreJours;
}
public int GetHashCode(ISharedProperty x)
{
// Left for you to implement
}
}
您可以使用相等比較器在一些集合或創建一個以檢查是否相等。你可以使用擴展方法來幫助你。
public static bool EqualsTo(this ISharedProperty x, ISharedProperty y)
{
return new SharedPropertyEqualityComparer().Equals(x, y);
}
// And use your extension method. Class1 and Class2
// implements ISharedProperty here
Class1 one = /* some value */;
Class2 two = /* some value */;
one.EqualsTo(two);
相關問題
- 1. 檢查列表是否包含不同派生類型的兩個元素
- 2. 檢查兩種類型是否相同
- 3. 查看兩個對象是否具有相同的類型
- 4. 檢查兩個列表是否包含相同的元素
- 5. 具有相同類型但名稱不同的多個元素?
- 6. 確定泛型類型是否相同
- 7. jQuery:如何檢查兩個元素是否具有相同的類
- 8. 檢查字段類型是否與java中的泛型類型相同
- 9. xml具有相同名稱和不同類型的元素
- 10. 兩個列表的元素是不同類型的相對補充
- 11. 具有兩個不相等(唯一)類型的泛型類
- 12. 如何檢查列表中的所有元素是否相同?
- 13. 檢查對象是否具有多類型參數的泛型
- 14. Angularjs檢查兩個陣列具有不同的元素
- 15. 具有相同數據但不同類型的兩個向量
- 16. 如何檢查兩個元素是否具有相同的文本格式?
- 17. 檢查兩個數組是否具有相同順序的元素
- 18. Java泛型 - 使用具有相同類名的類型實現兩種泛型類型的方法
- 19. 具有兩種泛型的泛型類
- 20. 檢查一個類的元素是否具有相同的html內容
- 21. 查找相同的元素類型
- 22. 檢查兩個jar類是否相同
- 23. 檢查兩個列表中的相同位置是否有相同的值
- 24. 檢查是否存在具有相同ID的HTML元素
- 25. 檢查兩個列表是否有相同的項目
- 26. 具有相關泛型類型的泛型類不能專用?
- 27. xsd - 具有不同類型的相同名稱的多個元素
- 28. JQuery檢查下一個可見元素是否具有相同的類
- 29. 具有相同名稱的非泛型和泛型類的不良實踐?
- 30. 檢查具有相同類名的多個元素的值
Thanks M Tolga,檢查整個兩個列表是否有相同的數據? – ucef
認爲它是這樣的,它遍歷列表A,對於列表A中的每個元素,它將查看列表B,如果任何元素具有與該語句爲真的那些共享屬性相同的值,並且現在您在if子句中,否則它只是查找列表A中的下一個元素。但是我必須說,如果您要在這些列表之間進行進一步的列表操作,那麼@Simon Belanger的答案會更有意義。 –