سؤال

ما زلت أتعلم (خطوات صغيرة). العبث بوظيفة وأمل في إيجاد طريقة أكثر صرامة للتعامل مع DataTables.

بالنسبة للجداول الأكثر شيوعًا طوال حياة البرنامج ، سأقوم بتفريغها على Datatables والاستعلام عنها بدلاً من ذلك. ما آمل أن أفعله هو الاستعلام عن DataTables لـ Say Colde X = "This" ، وتحويل قيم العمود "Y" مباشرة إلى قائمة للعودة إلى المتصل:

    private List<string> LookupColumnY(string hex)
    {
        List<string> stringlist = new List<string>();
        DataRow[] rows = tblDataTable.Select("Columnx = '" + hex + "'", "Columny ASC");
        foreach (DataRow row in rows) { stringlist.Add(row["Columny"].ToString()); } 
        return stringlist;
    }

أي شخص يعرف طريقة أبسط قليلاً؟ أعتقد أن هذا سهل بما فيه الكفاية ، لكنني أتساءل عما إذا كنت أفعل ما يكفي من هذه إذا لم يكن التكرار عبر Foreach Loop بمثابة نجاح في الأداء. تيا!

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

المحلول

يمكنك استخدام LINQ لتبسيط هذا:

public IEnumerable<string> LookupColumnY(string hex)
{
     return tblDataTable
                .Select("Columnx = '" + hex + "'", "Columny ASC")
                .Select(row => row["Columny"].ToString() );
}

إذا كنت بحاجة إلى إرجاع قائمة ، فيمكنك إضافة ToList():

public IList<string> LookupColumnY(string hex)
{
     return tblDataTable
                .Select("Columnx = '" + hex + "'", "Columny ASC")
                .Select(row => row["Columny"].ToString() )
                .ToList();
}

ومع ذلك ، فإن هذا سيظل تكرار كل صف في الاختيار.

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