هل من الممكن التعامل مع List.Contains تلقائيا من خلال مقارنة خاصية بشأن هذا البند؟

StackOverflow https://stackoverflow.com/questions/665713

سؤال

ويمكننا أن نفعل شيئا من هذا القبيل ل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))
{
    ...
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top