مجموعة البيانات: العداد وFindById لا يعودون المساواة DataRow

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

  •  20-08-2019
  •  | 
  •  

سؤال

والمشكلة اليوم في قانون بلدي هو نوع من غريبة، وأنا لا يمكن استنساخها حتى الآن. أنا أعمل مع مجموعة بيانات مكتوب (تم إنشاؤه مع المصمم) وأنا حلقات عبر كافة الصفوف في DataTable و.

وأحيانا (!)، عند العثور عن طريق المفتاح الأساسي، الصف عاد لا يساوي واحد من العداد. هذا هو بعض التعليمات البرمجية كتبت إعادة إنشاء المشكلة:

foreach(DataSet1.DataTable1Row dr in ds.DataTable1)
{
    if(ds.DataTable1.FindById(dr.Id) != dr)
        Console.Write(dr.Id);
}

وستتم كتابة أي خط إلى وحدة التحكم، لأن FindById دوما بإرجاع نفس الصف، وهو أمر منطقي حقا. في قانون بلدي المشروع، مع مجموعة بيانات مماثلة مع عدد قليل من الأعمدة سلسلة، في حوالي 3٪ من الصفوف (دائما نفس الصفوف!) لم يحدث ذلك، واحدة من المجالات سلسلة هو مجرد فارغة:

ds.DataTable1.FindById(dr.Id) != dr // returns false, for whatever reason

والمفتاح الأساسي هو الوحيد حقل المفتاح الأساسي، ولذلك FindById هو أسلوب الذي تم إنشاؤه. لا أحد يعرف القليل من تلميح أو لم تواجه نفس المشكلة من قبل؟ أخشى انها حالة خاصة جدا جدا أنا جعلت تمكن هذا الخطأ أو الميزة. :)

وفكرت في إمكانية هذا الكائن التي تنتجها الزهر الذي قام به التعداد. العداد لا يعمل مع نوع قاعدة DataRow الصفوف كتبته إنشاؤه. ولكن لم أجد شيئا خاطئا هناك ...

وهتاف ماتياس

هل كانت مفيدة؟

المحلول

ما هو نوع واحد منكم المفتاح الأساسي؟ مجموعة البيانات لديه علة خفية لمقارنة المعرفات الفريدة العمومية (والقيم ربما غيرها). الخطأ ارشد ليس لديها سوى أن تفعل مع بعض القيم ارشد وعادة ما يعمل بشكل جيد.

ملاحظة: عندما أقول لديها خلل، يعني أنا أعرف أن تقرير الشوائب وقد قبلت ولكن لا أعرف ما اذا كان تم الإصلاح وكذلك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top