لماذا مجموعة من مفتاح للكائنات مجهولة لا تتصرف بالطريقة المتوقعة؟
-
06-07-2019 - |
سؤال
ولدي ملف CSV هذا formart
A,B,value
a1,b1,10
a2,b1,12
a2,b1,15
a2,b2,14
a1,b1,12
والتي أنا تحويل كما DataTable وفي طلبي.
Dim enumerable = _dt.AsEnumerable
Dim groupedResults = enumerable.GroupBy( _
Function(x) _
New With { _
.A = x.Item("A").ToString, _
.B = x.Item("B").ToString _
} _
)
وتوقعت groupedResults العد إلى 4 بدلا من 5 والذي يظهر.
في الأساس لم يكن مجموعة من 1 والصف ال 5 في مجموعة واحدة.
وتوقعت الكائن بنفس القيمة سوف تنتج نفس المفتاح.
وماذا يمكن أن يكون السبب وراء ذلك؟
المحلول
تأكد خصائص نوع مجهول غير قابل للتغيير - هذه هي الطريقة للحصول على المساواة وتجزئة للعمل. (في C # جميع أنواع مجهولة المصدر وغير قابل للتغيير افتراضيا).
وهذه محاولة
Dim enumerable = _dt.AsEnumerable
Dim groupedResults = enumerable.GroupBy( _
Function(x) _
New With { _
Key .A = x.Item("A").ToString, _
Key .B = x.Item("B").ToString _
} _
)
وتحرير: الجزء Key
يعني أن الخاصية هي المفتاح لنوع مجهول. انظر VB أنواع مجهولة MSDN الصفحة للحصول على مزيد من التفاصيل.
لا تنتمي إلى StackOverflow