هل من الممكن التعامل مع List.Contains تلقائيا من خلال مقارنة خاصية بشأن هذا البند؟
-
21-08-2019 - |
سؤال
ويمكننا أن نفعل شيئا من هذا القبيل لList.Contains(myItem)
من أجل معرفة ما اذا كان خاصية على عنصر في القائمة يساوي خاصية على myItem
.
(ولقد اعتبر Contains
وExists
، شيء من هذا القبيل:
if (orderLines.Contains(myLine)) { ... }
ولكن لا يمكن الحصول على تعبير بسيط).
ونود شيء بسيط مثل ما يلي:
if (orderLines.[MethodName](myLine)) { }
وهذه الطريقة يجب أن تعود التلقائى صحيحا إذا واحد على الأقل orderLines[i]
البند يفي:
myLine.Product.Equals(orderLines[i].Product)
ولقد نفذنا IEquatable<OrderLine>
وهو ما يعادل بواسطة الخاصية Product
، ولكن لا يمكن العثور على كيفية المضي قدما من هناك.
المحلول
هل تستخدم الصافي 3.5؟ إذا كان الأمر كذلك، استخدام LINQ:
if (orderLines.Any(order => order.Product == myLine.Product))
{
...
}
لا تنتمي إلى StackOverflow