তালিকাটি সি # তে খালি আছে কিনা তা পরীক্ষা করুন [বন্ধ]


124

আমার কাছে একটি ডাটাবেস থেকে পপুলেটেড অবজেক্টের একটি তালিকা রয়েছে। তালিকাটি খালি থাকলে আমার ত্রুটি বার্তা প্রদর্শন করতে হবে এবং অন্যথায় গ্রিড ভিউ প্রদর্শন করতে হবে।

List<T>সি # তে একটি ফাঁকা আছে কিনা আমি কীভাবে চেক করব ?


9
তাহলে কি ব্যবহার করে ভুল হয়েছে if (list.Count == 0) { /* ... */ }?
— বার্ট ভ্যান নাইরোপ

11
বাif (!list.Any())
— থারউইন

10
কেন এই প্রশ্নটি ডাউনভোট করা হয়েছে তা বুঝতে পারি না। আমার জন্য এটি খুব নির্দিষ্ট (বিষয়গুলির তালিকাভুক্ত)। এখানে "অস্পষ্ট" কিছুই নেই। এই প্রশ্নের 30k এর বেশি ভিউ রয়েছে। +1
— মার্সেলো বারবোসা

2
প্রশ্নটি নিখুঁত করে তোলে। "তালিকাটি খালি থাকলে আমার একটি ত্রুটি বার্তা প্রদর্শন করা দরকার"। মানব যোগাযোগে মনে রাখবেন, প্রতিটি চরিত্রই গুরুত্বপূর্ণ নয়।
— টড পেন্টন

9
এটি # 1 গুগলের ফলাফল C# list isemptyযা এর জন্য এটি সম্পূর্ণ পয়েন্টে। আমি মনে করি প্রশ্নের অপ্রাসঙ্গিক অংশগুলি সম্পাদনা করা উচিত, এবং আমি আবার খুলতে ভোট দিচ্ছি।
— ফেলিক্স ডমবাক

উত্তর:


142

কেন না...

bool isEmpty = !list.Any();
if(isEmpty)
{
    // error message
}
else
{
    // show grid
}

GridViewএছাড়াও একটি হয়েছে EmptyDataTemplateযা যদি ডেটাউত্স খালি দেখানো হয়। এটি এএসপি.নেটে একটি পদ্ধতির:

<emptydatarowstyle backcolor="LightBlue" forecolor="Red"/>

<emptydatatemplate>

  <asp:image id="NoDataErrorImg"
    imageurl="~/images/NoDataError.jpg" runat="server"/>

    No Data Found!  

</emptydatatemplate> 

2
দ্রষ্টব্য: দ্বিতীয় পদ্ধতিটি এএসপি.এনইটি অনুমান করে।
— টিম শেমলেটার

2
list == nullপ্রথমে চেক করা ভাল না ?
— 10 ʙᴀᴋᴇʀ

2
@;, var someList = নতুন তালিকা <স্ট্রিং> (); তাড়িত করা হবে (এবং তাই নাল নয়) তবে প্রক্রিয়া করার জন্য উপাদানগুলির শূন্য থাকবে
— ডেভিডসোসিত

74

আপনি যে তালিকাটি ব্যবহার করছেন সেটি যদি হয় IEnumerable<T>এবং লিনক একটি বিকল্প হয় তবে আপনি ব্যবহার করতে পারেন Any:

if (!list.Any()) {

}

অন্যথায় আপনার কাছে যথাক্রমে অ্যারে এবং সংগ্রহের ধরণের একটি Lengthবা Countসম্পত্তি থাকে।


10
তাত্ক্ষণিক দ্রষ্টব্য হিসাবে: list.Any এর গণনার চেয়ে অনেক ভাল পারফরম্যান্স রয়েছে।
— অ্যাড্রিয়ান লোপেজ

2
@ অ্যাড্রিয়ানলপেজ: আপনি কি এ বিষয়ে বিস্তারিত বলতে পারবেন? বর্তমানের দৈর্ঘ্য বা গণনা ট্র্যাক করে রাখে এমন সংগ্রহের সম্পত্তি যাচাই করার চেয়ে দ্রুততর হতে পারে এমন কোনও জিনিস .Countবা .Lengthসম্পত্তি থাকলে আপনার কী আছে ? আপনার যদি কেবল একটি এনুমरेटर থাকে তবে অবশ্যই তার চেয়ে দ্রুত । আরও দেখুন: stackoverflow.com/questions/305092/... বা stackoverflow.com/questions/5741617/...List.Any().Any().Count() > 0
— noox

2
@ নোকস (। নেট কোর) উত্সটি দেখে মনে হচ্ছে, এটি Anyপরীক্ষা করার আগে গণনা পুনরুদ্ধার করা সস্তা, যা আপনার ক্ষেত্রে IListProvider<>গণনা ট্র্যাক করে না এমন ক্ষেত্রে , এটি একবারের পরিবর্তে গণনা করা হবে বলে চেক করে দেখা যাচ্ছে che
— নেটমেজ

26
    If (list.Count==0){
      //you can show your error messages here
    } else {
      //here comes your datagridview databind 
    }

আপনি আপনার ডেটাগ্রিডকে মিথ্যা দৃশ্যমান করে অন্য বিভাগে দৃশ্যমান করতে পারেন।


@ নেটমেজ এটি তালিকার পক্ষে কাজ করে না। এটি একটি O(1)অপারেশন এবং উপাদান গণনা করার জন্য কোনও পুনরাবৃত্তি করা হয়নি। দেখুন List<T>.Count।
— স্পেন্সার ওয়াইকজোরেক

@ স্পেনসারওয়াইজকোরেক আপনি সঠিক, মন্তব্যটি পুরানো পাশাপাশি ভুলও ছিল :) যদিও সাধারণভাবে, আমি এখনও Any()আরও ভাল অভিপ্রায় প্রকাশের পছন্দ করব , পাশাপাশি যখন আপনি জানেন না যে আপনার প্রকৃত আছে তখন আরও পারফরম্যান্ট হওয়া List<T>।
— নেটমেজ

18

Countসম্পত্তি ব্যবহার সম্পর্কে কি ।

 if(listOfObjects.Count != 0)
 {
     ShowGrid();
     HideError();
 }
 else
 {
     HideGrid();
     ShowError();
 }

3
গণনা একটি সম্পত্তি নয় একটি পদ্ধতি
— মোসলেম বেন ধাউ

5
@ মোসলেমবেনডৌউ নির্ভর করে যে এটি লিনক এক্সটেনশন পদ্ধতিটি উন্মোচিত / বলা হচ্ছে, বা বস্তুর স্থানীয় to
— গ্র্যান্ট থমাস

@ গ্রান্ট থমাস আমি এটিকে তালিকা <টি> বস্তু হিসাবে নিয়েছি তবে হ্যাঁ আপনি সঠিক are
— মোসলেম বেন ধৌ

তালিকার তালিকাগুলি যদি নাল হয়?
— সাবরি মেভিş

2
@ সাবরিমিভিş কোনও পদ্ধতি থেকে ফিরে আসা সংগ্রহ / আয়করনযোগ্য / তালিকা কখনই হওয়া উচিত নয় null। পরিবর্তে এটি একটি খালি সংগ্রহ হওয়া উচিত।
— জেরোইন ভ্যান ল্যাঞ্জেন

8

আপনার একটি সাধারণ IFবিবৃতি ব্যবহার করা উচিত

List<String> data = GetData();

if (data.Count == 0)
    throw new Exception("Data Empty!");

PopulateGrid();
ShowGrid();

সবচেয়ে সহজ এবং সর্বোত্তম উপায় আইএমও।
— জবাবা

যদি পদ্ধতিটি শূন্য দেয় তবে গণনা সম্পত্তি ব্যর্থ হবে। কোডটি সংক্ষিপ্ত রাখতে, নাল রেফারেন্স চেক অপারেটরটিকে "?" বিবেচনা করুন। উদাহরণস্বরূপ "যদি (ডেটা?। হিসাব == 0)। ... বা ক্লাসিক নাল চেক "যদি (ডেটা! = নাল && আরও কিছু চুক্তি) ....."
— ডেভিডসোসিত

নীচের কোডটি একটি ডটনেটফিডেলে আটকান এবং আপনি সিস্টেমটি দেখতে পাবেন ull নালরফেরেন্স এক্সেপশন: অবজেক্টের রেফারেন্স কোনও অবজেক্টের উদাহরণে সেট করা হয়নি। using System; using System.Collections.Generic; public class Program { public static void Main() { List<string> stringList = null; if (stringList.Count == 0) { Console.WriteLine("no items in collection"); } } }
— ডেভিডসোসিত


3

গ্রিডভিউতে নিজেই একটি পদ্ধতি রয়েছে যা পরীক্ষা করে যে আপনি যে ডেটা উত্সকে আবদ্ধ করছেন তা খালি রয়েছে, এটি আপনাকে অন্য কিছু প্রদর্শন করতে দেয়।


0

: যদি আপনি gridview ব্যবহার করছেন, তাহলে খালি ডেটা টেমপ্লেটটি ব্যবহার http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.emptydatatemplate.aspx

      <asp:gridview id="CustomersGridView" 
        datasourceid="CustomersSqlDataSource" 
        autogeneratecolumns="true"
        runat="server">

        <emptydatarowstyle backcolor="LightBlue"
          forecolor="Red"/>

        <emptydatatemplate>

          <asp:image id="NoDataImage"
            imageurl="~/images/Image.jpg"
            alternatetext="No Image" 
            runat="server"/>

            No Data Found.  

        </emptydatatemplate> 

      </asp:gridview>

এটি অত্যন্ত এএসপি.এনইটি নির্দিষ্ট।
— গ্র্যান্ট থমাস

আমি উইনফর্মের ছেলেরা নই তবে গ্রিডভিউ এসপ.net নির্দিষ্ট নয়। এটি ফর্ম একটি ডেটাগ্রিডভিউ?
— ডেভিড ম্যাকক্রিমমন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.