c# - لترجمة - قاموس عربي انجليزي ناطق مجاني




ما هي أفضل طريقة للكشف إذا كان إيداتريدر فارغ؟ (3)

تعثرت فقط عبر هذه المشكلة وخرجنا بهذا ...

bool isBeforeEoF;

do
{
    isBeforeEoF = reader.Read();

    if (isBeforeEoF)
    {
        yield return new Foo()
        {
            StreamID = (Guid)reader["ID"],
            FileType = (string)reader["Type"],
            Name = (string)reader["Name"],
            RelativePath = (string)reader["RelativePath"]
        };         
    }

} while (isBeforeEoF);

يبدو أن IDataReader.Read () صحيح دائما مرة واحدة على الأقل (إذا كنت مخطئا حول هذا اسمحوا لي أن أعرف.) فكيف يمكنك أن تقول إذا كان لديه أي سجلات دون مجرد التفاف عليه في محاولة / الصيد؟


نعم، إذا كنت ترغب في استخدام واجهة ثم قراءة حتى فالس هو السبيل الوحيد لاختبار. إذا كنت تبحث عن تنفيذ IDataReader عام، يمكنك محاولة DbDataReader واستخدام الخاصية DbDataReader .


if(dr.Read())
{
   //do stuff
}
else
{
 //it's empty
}

وعادة ما تفعل ذلك على الرغم من:

while(dr.Read())
{
}




ado.net