यह जांचने का सबसे अच्छा तरीका है कि डेटा टेबल में शून्य मान है या नहीं


87

यह जांचने का सबसे अच्छा तरीका क्या है कि डेटा टेबल में शून्य मान है?

हमारे परिदृश्य में अधिकांश समय, एक कॉलम में सभी अशक्त मूल्य होंगे।

(यह थकाऊ एक 3 पार्टी एप्लिकेशन द्वारा लौटाया जाता है - हम अपने आवेदन को डेटा-टेबल संसाधित करने से पहले एक सत्यापन करने की कोशिश कर रहे हैं)


जवाबों:


163

DBNull.Valueजिस भी तरीके से आप फिट दिखते हैं, उसमें शून्य मानों को फ़िल्टर करने और प्रबंधित करने के लिए स्तंभ के मान की तुलना करने का प्रयास करें ।

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

DBNull वर्ग के बारे में अधिक जानकारी


यदि आप जाँचना चाहते हैं कि क्या तालिका में एक शून्य मान मौजूद है तो आप इस विधि का उपयोग कर सकते हैं:

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();

1
यह एक्सटेंशन विधि कहाँ जानी चाहिए, इसके लिए सबसे अच्छा अभ्यास क्या है?
14

6
मैं आमतौर पर कुछ सामान्य लाइब्रेरी या अपने DAL में "एक्सटेंशन" फ़ोल्डर बनाता हूं। "DataTableExtensions.cs" नामक एक फ़ाइल बनाएं और उस पद्धति को जोड़ें। इसके बाद आप बस अपने सीएस फाइलों में "Name.Space.Extensions का उपयोग" जोड़ेंगे और परिभाषित सभी एक्सटेंशन विधियों तक पहुंच पाएंगे।
शिकारी

3
आप (अब) table.AsEnumerable()इसके बजाय का उपयोग कर सकते हैंtable.Rows.OfType<DataRow>()
तीज

23
foreach(DataRow row in dataTable.Rows)
{
    if(row.IsNull("myColumn"))
        throw new Exception("Empty value!")
}

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

आप LinQ Use Follow Query का उपयोग करके / रिक्त / स्थान Etc मान को शून्य / रिक्त कर सकते हैं

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

यहाँ की जगह columnName तालिका स्तंभ नाम और साथ "" इसके बाद के संस्करण कोड में अपनी खोज आइटम हम शून्य मान देख।


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

5
हालांकि यह कोड प्रश्न का उत्तर दे सकता है, यह समझाने के लिए बेहतर है कि समस्या को कैसे हल किया जाए और उदाहरण या संदर्भ के रूप में कोड प्रदान किया जाए। कोड-केवल उत्तर भ्रामक और संदर्भ की कमी हो सकते हैं।
रॉबर्ट कोलंबिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.