কোনও ডাটা টেবিলের নাল মান রয়েছে কিনা তা যাচাই করার সেরা উপায়


90

কোনও ডাটা টেবিলের নাল মান রয়েছে কিনা তা যাচাই করার সর্বোত্তম উপায় কী?

আমাদের দৃশ্যের বেশিরভাগ সময়, একটি কলামে সমস্ত নাল মান থাকবে।

(এই ডেটেবলটি তৃতীয় পক্ষের অ্যাপ্লিকেশন দ্বারা ফিরিয়ে দেওয়া হয়েছে - আমাদের অ্যাপ্লিকেশন ডেটা-টেবিল প্রক্রিয়া করার আগে আমরা একটি ভ্যালিয়েডেশন দেওয়ার চেষ্টা করছি)


উত্তর:


168

আপনি যেভাবেই DBNull.Valueউপযুক্ত দেখছেন তাতে নাল মানগুলি ফিল্টার করতে এবং পরিচালনা করতে কলামের মানটির সাথে মানের তুলনা করার চেষ্টা করুন ।

foreach(DataRow row in table.Rows)
{
    object value = row["ColumnName"];
    if (value == DBNull.Value)
        // do something
    else
        // do something else
}

ডিবিএনুল ক্লাস সম্পর্কে আরও তথ্য


আপনি যদি টেবিলে কোনও নাল মান বিদ্যমান কিনা তা পরীক্ষা করতে চান তবে আপনি এই পদ্ধতিটি ব্যবহার করতে পারেন:

public static bool HasNull(this DataTable table)
{
    foreach (DataColumn column in table.Columns)
    {
        if (table.Rows.OfType<DataRow>().Any(r => r.IsNull(column)))
            return true;
    }

    return false;
}

যা আপনাকে এটি লিখতে দেবে:

table.HasNull();

4
এই এক্সটেনশন পদ্ধতিটি কোথায় যাওয়া উচিত তার জন্য সর্বোত্তম অনুশীলন কী?
স্টুপারউসার

6
আমি সাধারণত কিছু সাধারণ লাইব্রেরিতে বা আমার ডালে একটি "এক্সটেনশানস" ফোল্ডার তৈরি করি। "ডেটাবেল এক্সটেনশনস সি" নামে একটি ফাইল তৈরি করুন এবং সেই পদ্ধতিটি যুক্ত করুন। এরপরে আপনি কেবল আপনার সিএস ফাইলগুলিতে "নাম.স্পেস.এক্সটেনশনগুলি ব্যবহার করে" যুক্ত করবেন এবং সংজ্ঞায়িত সমস্ত এক্সটেনশন পদ্ধতিতে অ্যাক্সেস পাবেন।
শিকারি

4
আপনি (এখন) এর table.AsEnumerable()পরিবর্তেtable.Rows.OfType<DataRow>()
তেজয়


11

আপনি লুপটি সারি এবং কলামগুলি নিক্ষেপ করতে, নলের জন্য পরীক্ষা করতে, একটি বুলের সাথে নাল রয়েছে কিনা তা ট্র্যাক করে রাখতে পারেন, তারপরে টেবিলটি লুপ করার পরে এটি পরীক্ষা করে এটি পরিচালনা করতে পারেন।

//your DataTable, replace with table get code
DataTable table = new DataTable();
bool tableHasNull = false;

foreach (DataRow row in table.Rows)
{
    foreach (DataColumn col in table.Columns)
    {
        //test for null here
        if (row[col] == DBNull.Value)
        {
            tableHasNull = true;
        }
    }
}

if (tableHasNull)
{
    //handle null in table
}

আপনি ব্রেক স্টেটমেন্টের সাহায্যে ফরচ লুপ থেকেও বেরিয়ে আসতে পারেন যেমন

//test for null here
if (row[col] == DBNull.Value)
{
    tableHasNull = true;
    break;
}

বাকি টেবিলের মধ্য দিয়ে লুপিং সংরক্ষণ করতে।



0

আপনি লিনকিউ ব্যবহার করে নিম্নলিখিত জিজ্ঞাসাটি ব্যবহার করে ফাঁকা / ফাঁকা / স্থান ইত্যাদির মান বাতিল করতে পারেন

   var BlankValueRows = (from dr1 in Dt.AsEnumerable()
                                  where dr1["Columnname"].ToString() == ""
                                  || dr1["Columnname"].ToString() == ""
                                   || dr1["Columnname"].ToString() == ""
                                  select Columnname);

এখানে উপরের কোডে টেবিল কলামের নাম এবং "" আপনার অনুসন্ধান আইটেম সহ কলামের নামটি প্রতিস্থাপন করুন আমরা নালাগুলি দেখছি


0
DataTable dt = new DataTable();
foreach (DataRow dr in dt.Rows)
{
    if (dr["Column_Name"] == DBNull.Value)
    {
        //Do something
    }
    else
    {
        //Do something
    }
}

4
যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, কীভাবে সমস্যাটি সমাধান করবেন এবং উদাহরণ বা রেফারেন্স হিসাবে কোডটি কীভাবে সরবরাহ করবেন তা আরও ভাল to কোড-কেবল উত্তরগুলি বিভ্রান্তিকর হতে পারে এবং প্রসঙ্গের অভাব হতে পারে।
রবার্ট কলম্বিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.