কখন ব্যবহার করবেন .প্রথম এবং কখন ব্যবহার করবেন? লিনকুতে ফার্স্টআরডিফল্ট?


824

আমি আশেপাশে অনুসন্ধান করেছি এবং আপনি কখন ব্যবহার করতে চান .Firstএবং কখন আপনি .FirstOrDefaultলিনিক্যুতে ব্যবহার করতে চান সে সম্পর্কে একটি পরিষ্কার উত্তর খুঁজে পাইনি ।

  • আপনি কখন ব্যবহার করতে চান .First? আপনি যখন ব্যতিক্রমটি ধরতে চান কেবল তখনই কোনও ফলাফল আসে না যেখানে?

    var result = List.Where(x => x == "foo").First();
  • এবং আপনি কখন ব্যবহার করতে চান .FirstOrDefault? আপনি যখন সর্বদা ডিফল্ট টাইপটি চান কোনও ফলাফল না চান?

    var result = List.Where(x => x == "foo").FirstOrDefault();
  • এবং এই বিষয়ে, টেক সম্পর্কে কী?

    var result = List.Where(x => x == "foo").Take(1);

86
.Firstএবং .FirstOrDefaultউভয়ই আর্গুমেন্ট হিসাবে পূর্বাভাস গ্রহণ করে, তাই var result = List.Where(x => x == "foo").First();পুনরায় লিখিত হতে পারেvar result = List.First(x => x == "foo");
রিয়ান স্মিটস

59
বিবেচনা করতে ভুলবেন না Singleএবং SingleOrDefault। আমি ঘৃণা করি যখন লোকেরা Firstযখন তাদের সত্যিকার অর্থে ব্যবহার করে Single; )
বার্তোসকেপিপি

19
যদি একাধিক উপাদান ফিরে আসে তবে সিঙ্গল বা সিঙ্গলঅরডিফল্ট একটি ব্যতিক্রম ছুঁড়ে ফেলবে! আমার মনে হয় বেশিরভাগ সাধারণ ক্ষেত্রে ফার্স্টআরডিফল্ট আরও ভাল!
এরিক ড্রভেন

21
মুল বক্তব্যটি যখন আপনি একক ফলাফলের প্রত্যাশা করেন তখন আপনার উচিত উচিত বলা উচিত এবং ব্যতিক্রমটি আপনার যুক্তি ব্যর্থ হওয়ার ইঙ্গিত দেয়।
নেটমেজ

1
এছাড়াও বিবেচনা করুন যে .FirstOrDefault()সর্বদা ব্যবহার আপনাকে আরও অর্থপূর্ণ ব্যতিক্রম ছুঁড়ে দেওয়ার সুযোগ দেয়। যদি কোনও পদ্ধতিতে সিক্যুয়েন্স ব্যতিক্রম ছুঁড়ে দেওয়া হয় এবং একাধিক হয় তবে .First()কোন বিবৃতিটি সমস্যা তা বোঝা কঠিন।
স্টিংজি জ্যাক

উত্তর:


807

আমি First()যখন ক্রমটি কমপক্ষে একটি উপাদান হিসাবে জানব বা আশা করি তখন আমি ব্যবহার করব would অন্য কথায়, যখন এটি একটি ব্যতিক্রমী ঘটনা হয় যে ক্রমটি খালি থাকে।

FirstOrDefault()যখন আপনি জানেন যে কোনও উপাদান ছিল কিনা তা আপনাকে পরীক্ষা করতে হবে যখন ব্যবহার করুন Use অন্য কথায়, যখন সিকোয়েন্সটি খালি থাকা বৈধ। আপনি চেক জন্য ব্যতিক্রম হ্যান্ডলিং উপর নির্ভর করা উচিত নয়। (এটি খারাপ অনুশীলন এবং কর্মক্ষমতা ক্ষতি করতে পারে)।

অবশেষে First()এবং এর মধ্যে পার্থক্য Take(1)হ'ল First()এটি উপাদানটিকে নিজেই Take(1)ফিরিয়ে দেয়, যখন এমন উপাদানগুলির ক্রম দেয় যা ঠিক একটি উপাদান ধারণ করে।


4
@ড্রিস - আমি কল্পনা করছিলাম যে প্রথম এবং ফার্স্টআরডিফল্টের মধ্যে নির্বাচন করার সময় আমরা ব্যতিক্রমী ব্যতিক্রম নির্দেশিকাটির মন্ত্রটি ব্যবহার করতে পারি। সুস্পষ্ট উত্তরের জন্য ধন্যবাদ।
মেট্রো স্মুরফ

5
কেবলমাত্র আমি যুক্ত করব যে আপনি যে ধরণের নির্বাচন করছেন তার জন্য যদি ডিফল্ট মানটি একটি বৈধ মান হতে পারে, উদাহরণস্বরূপ আপনার ফলাফল হতে পারে মান মান 0, তবে ব্যতিক্রমটি পরিচালনা করা এটি হ্যান্ডেল করার সেরা উপায় বলে মনে হয় ।
পিটারবেলম

25
স্ক্র্যাচ যে, আমি এটি সম্পাদন করার জন্য খুব সুন্দর উপায় খুঁজে পেয়েছি:
ডিফল্টআইফেম্পটি

5
গ্রহণ হ'ল এক উপাদান ফেরত দেয় না, এটি সর্বাধিক একটি উপাদানটিতে ফিরে আসে (যদি আপনি অবশ্যই 1 নির্দিষ্ট করে থাকেন)। ক্রমটি প্রাথমিকভাবে খালি থাকলে এটি 0 টি উপাদানও ফিরে আসতে পারে।
SPIRiT_1984

3
@ রইনামির, হ্যাঁ প্যারামিটারটি কোথায় নেওয়া উচিত সেই প্রশ্নের প্রসঙ্গে আমি এও লক্ষ করেছি যে এই বাক্যটির অব্যবহিত পরে প্যারেন্সে।
শুক্রবার 21'15

272

.Firstকোনও ফলাফল না থাকলে একটি ব্যতিক্রম ছুঁড়ে ফেলবে। .FirstOrDefaultনা, এটি কেবল নাল (রেফারেন্স ধরণ) বা মান ধরণের ডিফল্ট মানটি ফেরত দেবে। (উদাহরণস্বরূপ, 0কোনও int এর মতো করুন )) এখানে প্রশ্নটি যখন আপনি ডিফল্ট টাইপ চান না, তবে আরও হয়: আপনি কি কোনও ব্যতিক্রম হ্যান্ডেল করতে বা ডিফল্ট মানটি পরিচালনা করতে ইচ্ছুক? যেহেতু ব্যতিক্রমগুলি ব্যতিক্রমী হওয়া উচিত, FirstOrDefaultযখন আপনি নিশ্চিত হন না যে আপনি আপনার অনুসন্ধানের ফলাফল পেয়ে যাচ্ছেন কিনা তা পছন্দ করা হয়। যখন যৌক্তিকভাবে ডেটা থাকা উচিত, ব্যতিক্রম হ্যান্ডলিং বিবেচনা করা যেতে পারে।

Skip()এবং Take()ফলাফলগুলিতে পেজিং সেট আপ করার সময় সাধারণত ব্যবহৃত হয়। (প্রথম 10 টি ফলাফল এবং পরবর্তী পৃষ্ঠায় পরবর্তী 10 দেখানো ইত্যাদি)

আশাকরি এটা সাহায্য করবে.


5
@ জিরোইন - স্কিপ / টেক ব্যবহারের জন্য ভাল ব্যবহারের ক্ষেত্রে ভাল পয়েন্ট।
মেট্রো স্মুরফ

4
.FirstOrDefaultউল্লেখের জন্য +1 যা রেফারেন্স ধরণের জন্য বাতিল হয়ে যাবে। "ডিফল্ট" অবজেক্টটি কী হবে তা নিয়ে আমি বিভ্রান্ত হয়ে পড়েছিলাম। এই উত্তরটি তা পরিষ্কার করেছে।
মাইক টাভের্ন 4:38

115

.First()ফেরত দেওয়ার মতো কোনও সারি না থাকলে ব্যতিক্রম ছুঁড়ে ফেলা হবে, এবং পরিবর্তে .FirstOrDefault()ডিফল্ট মান ( NULLসমস্ত রেফারেন্স ধরণের জন্য) ফিরিয়ে দেবে ।

সুতরাং যদি আপনি প্রস্তুত এবং সম্ভাব্য ব্যতিক্রম হ্যান্ডেল করতে ইচ্ছুক হন, .First()ঠিক আছে। আপনি যদি != nullযাইহোক রিটার্নের মানটি পরীক্ষা করতে পছন্দ করেন তবে .FirstOrDefault()আপনার ভাল পছন্দ।

তবে আমার ধারণা, এটিও কিছুটা ব্যক্তিগত পছন্দ। আপনার যেটি আরও বেশি বোঝায় এবং আপনার কোডিং স্টাইলটি আরও ভাল ফিট করে Use


66

প্রথম ()

  1. একটি অনুক্রমের প্রথম উপাদানটি প্রদান করে Return
  2. ফলাফল বা উত্স নাল না থাকলে এটি ত্রুটি ফেলে দেয়।
  3. আপনার এটি ব্যবহার করা উচিত, যদি একাধিক উপাদান প্রত্যাশিত হয় এবং আপনি কেবল প্রথম উপাদান চান।

FirstOrDefault ()

  1. অনুক্রমের প্রথম উপাদান বা কোনও উপাদান না পাওয়া গেলে একটি ডিফল্ট মান প্রদান করে value
  2. উত্সটি শূন্য হলেই এটি একটি ত্রুটি ছুড়ে দেয়।
  3. আপনার এটি ব্যবহার করা উচিত, যদি একাধিক উপাদান প্রত্যাশিত হয় এবং আপনি কেবল প্রথম উপাদান চান। ফলাফল খালি থাকলে ভাল good

আমাদের ইউজারআইনফোস টেবিল রয়েছে, যার কয়েকটি রেকর্ড নীচে দেখানো আছে। নীচে এই টেবিলের ভিত্তিতে আমি উদাহরণ তৈরি করেছি ...

ব্যবহারকারীর তথ্য সারণী

কীভাবে প্রথম ব্যবহার করবেন ()

var result = dc.UserInfos.First(x => x.ID == 1);

কেবলমাত্র একটি রেকর্ড রয়েছে যেখানে আইডি == ১. এই রেকর্ডটি
আইডিটি ফিরিয়ে নেওয়া উচিত : 1 প্রথম নাম: মণীশ শেষ নাম: দুবেই ইমেল: xyz@xyz.com

var result = dc.UserInfos.First(x => x.FName == "Rahul");   

একাধিক রেকর্ড রয়েছে যেখানে এফনাম == "রাহুল"। প্রথম রেকর্ডটি ফিরতে হবে।
আইডি: 7 প্রথম নাম: রাহুলের শেষ নাম: শর্মা ইমেল: xyz1@xyz.com

var result = dc.UserInfos.First(x => x.ID ==13);

আইডি == 13 সহ কোনও রেকর্ড নেই An একটি ত্রুটি ঘটানো উচিত।
অবৈধ অপারেশন এক্সসেপশন: সিকোয়েন্সে কোনও উপাদান নেই

ফার্স্টঅরডিফল্ট () কীভাবে ব্যবহার করবেন

var result = dc.UserInfos.FirstOrDefault(x => x.ID == 1);

কেবলমাত্র একটি রেকর্ড রয়েছে যেখানে আইডি == ১. এই রেকর্ডটি
আইডিটি ফিরিয়ে নেওয়া উচিত : 1 প্রথম নাম: মণীশ শেষ নাম: দুবেই ইমেল: xyz@xyz.com

var result = dc.UserInfos.FirstOrDefault(x => x.FName == "Rahul");

একাধিক রেকর্ড রয়েছে যেখানে এফনাম == "রাহুল"। প্রথম রেকর্ডটি ফিরতে হবে।
আইডি: 7 প্রথম নাম: রাহুলের শেষ নাম: শর্মা ইমেল: xyz1@xyz.com

var result = dc.UserInfos.FirstOrDefault(x => x.ID ==13);

আইডি == ১৩ সহ কোনও রেকর্ড নেই The রিটার্নটির মানটি শূন্য

আশা করি এটি আপনাকে কখন ব্যবহার করতে হবে First()বা বুঝতে সাহায্য করবে FirstOrDefault()


4
আমার মতে, "একটি ত্রুটি ঘটানো উচিত" বিবৃতিটি। তৃতীয় ফার্স্টঅরডিফল্ট () এর অধীনে - উদাহরণ বিভ্রান্তিকর।
জান্নিক

হ্যালো, আপনি ভাল ব্যাখ্যা করেছেন, তবে আমি যখন কিছুটা যোগ হতে ডেটা পাবে এবং যখন কোনও বিদেশী কী টেবিলে আইডি উপস্থিত ছিল না তখন কোনটি ব্যবহৃত হয় আমি তখন কিছুটা বিভ্রান্ত হয়ে পড়েছি? বর্তমানে, আমি প্রথম () ব্যবহার করছি তবে আপনার উত্তরটি পড়ার পরে আমার কোনও ধারণা নেই P অনুগ্রহ করে সহায়তা করুন
ব্রিজেশ মাভানী

20

প্রথমত, Takeএকটি সম্পূর্ণ ভিন্ন পদ্ধতি। এটি একটি IEnumerable<T>এবং একটিও দেয় না T, তাই এটি বাইরে।

মধ্যে Firstএবং FirstOrDefault, আপনি ব্যবহার করা উচিত Firstযখন আপনি কি নিশ্চিত যে একটি উপাদান বিদ্যমান এবং যদি তা না করে, তাহলে একটি ত্রুটি করছি।

যাইহোক, যদি আপনার ক্রমটিতে default(T)উপাদান রয়েছে (উদাহরণস্বরূপ null) এবং আপনাকে খালি থাকার এবং প্রথম উপাদানটির মধ্যে পার্থক্য করা দরকার null, আপনি ব্যবহার করতে পারবেন না FirstOrDefault


2
@ মেহরদাদ - দুর্দান্ত পয়েন্টস, আবার: প্রথমটি প্রত্যাবর্তনযোগ্য এবং কখন ফার্স্টআরডিফল্ট ব্যবহার করবেন না।
মেট্রো স্মুরফ

15

প্রথম:

  • একটি অনুক্রমের প্রথম উপাদানটি প্রদান করে
  • ব্যতিক্রম নিক্ষেপ: ফলাফলের কোনও উপাদান নেই
  • যখন ব্যবহার করুন: যখন 1 টিরও বেশি উপাদান প্রত্যাশিত হয় এবং আপনি কেবল প্রথমটি চান

FirstOrDefault:

  • অনুক্রমের প্রথম উপাদান বা কোনও উপাদান না পাওয়া গেলে একটি ডিফল্ট মান প্রদান করে value
  • ব্যতিক্রম ছোঁড়া: কেবল উত্সটি শূন্য হলে
  • যখন ব্যবহার করুন: যখন 1 টিরও বেশি উপাদান প্রত্যাশিত হয় এবং আপনি কেবল প্রথমটি চান। ফলাফল খালি হওয়াও ঠিক ok

থেকে: http://www.technicaloverload.com/linq-single-vs-singleordefault-vs-first-vs-firstordefault/


10

আরেকটি পার্থক্য লক্ষ করুন যে আপনি যদি কোনও প্রোডাকশন পরিবেশে কোনও অ্যাপ্লিকেশন ডিবাগ করেন তবে আপনার লাইন নম্বরগুলিতে অ্যাক্সেস নাও থাকতে পারে, তাই .First()কোনও পদ্ধতিতে কোন বিশেষ বিবৃতিটি ব্যতিক্রম ছুঁড়েছিল তা সনাক্ত করা কঠিন হতে পারে।

ব্যতিক্রম বার্তায় কোনও লাম্বদা এক্সপ্রেশন আপনি অন্তর্ভুক্ত করবেন না যা কোনও সমস্যা তৈরি করতে পারে এমনকি ডিবাগ করা আরও শক্ত।

এ কারণেই আমি সর্বদা ব্যবহার FirstOrDefault()করি যদিও আমি জানি নাল এন্ট্রি ব্যতিক্রমী পরিস্থিতি তৈরি করবে।

var customer = context.Customers.FirstOrDefault(i => i.Id == customerId);
if (customer == null)
{
   throw new Exception(string.Format("Can't find customer {0}.", customerId));
}

5

প্রথম ()

যখন আপনি জানেন যে ফলাফলটিতে 1 টিরও বেশি বেশি প্রত্যাশিত উপাদান রয়েছে এবং আপনার ক্রমের প্রথম উপাদানটি হওয়া উচিত।

FirstOrDefault ()

ফার্স্টআরডিফল্ট () ঠিক প্রথম () এর মতো, যদি কোনও উপাদান নির্দিষ্ট শর্তের সাথে মেলে না তবে এটি জেনেরিক সংগ্রহের অন্তর্নিহিত ধরণের ডিফল্ট মান প্রদান করে returns যদি কোনও উপাদান না পাওয়া যায় তবে এটি অবৈধপ্রকাশের অভিজ্ঞতাটি ছুঁড়ে না। তবে উপাদান সংগ্রহ বা ক্রমগুলি ব্যতিক্রম ছুঁড়ে ফেলার চেয়ে শূন্য।


হ্যালো, আপনি ভাল ব্যাখ্যা করেছেন, তবে আমি যখন কিছুটা যোগ হতে ডেটা পাবে এবং যখন কোনও বিদেশী কী টেবিলে আইডি উপস্থিত ছিল না তখন কোনটি ব্যবহৃত হয় আমি তখন কিছুটা বিভ্রান্ত হয়ে পড়েছি? বর্তমানে, আমি প্রথম () ব্যবহার করছি তবে আপনার উত্তরটি পড়ার পরে আমার কোনও ধারণা নেই P অনুগ্রহ করে সহায়তা করুন
ব্রিজেশ মাভানী

4

এই ধরনের ফাংশনটি উপাদান অপারেটরগুলির অন্তর্গত। কিছু দরকারী উপাদান অপারেটর নীচে সংজ্ঞায়িত করা হয়।

  1. প্রথম / FirstOrDefault
  2. সর্বশেষ / LastOrDefault
  3. একক / SingleOrDefault

যখন আমরা একটি নির্দিষ্ট শর্তের উপর ভিত্তি করে ক্রম থেকে একটি একক উপাদান নির্বাচন করার প্রয়োজন হয় আমরা এলিমেন্ট অপারেটরগুলি ব্যবহার করি। এখানে একটি উদাহরণ।

  List<int> items = new List<int>() { 8, 5, 2, 4, 2, 6, 9, 2, 10 };

প্রথম () অপারেটর শর্তটি সন্তুষ্ট করার পরে ক্রমের প্রথম উপাদানটি প্রদান করে। যদি কোনও উপাদান না পাওয়া যায় তবে এটি ব্যতিক্রম ছুঁড়ে দেবে।

অন্তর্নির্মিত ফলাফল = আইটেম here যেখানে (আইটেম => আইটেম == 2)। প্রথম ();

শর্তটি সন্তুষ্ট করার পরে ফার্স্টআরডিফল্ট () অপারেটর একটি ক্রমের প্রথম উপাদানটি প্রদান করে returns যদি কোনও উপাদান খুঁজে পাওয়া যায় না তবে এটি সেই ধরণের ডিফল্ট মান ফিরে আসবে।

int ফলাফল 1 = আইটেমস.এখন (আইটেম => আইটেম == 2) .ফার্সআরডিফল্ট ();


সহজেই বোঝার সহজ উদাহরণ সহ সুন্দরভাবে ব্যাখ্যা করেছেন।
আরসলান ভাট্টি

3

আমি এমন একটি ওয়েবসাইট পেয়েছি যা ফার্স্টআরডেফল্ট
http://thepursuitofalife.com/the-linq-firstordefault-method-and-null-resultsets/ এর প্রয়োজনীয়তার ব্যাখ্যা দিতে সংযোজনকারীদের খুঁজে পেয়েছে এবং
যদি কোনও প্রশ্নের কোনও ফলাফল না থাকে এবং আপনি প্রথমে কল করতে চান () বা একক সারি পেতে (...) আপনি একটি "ক্রম কোনও উপাদান নেই" ব্যতিক্রম পাবেন।

দাবি অস্বীকার: আমি কখনোই লিনকিউ ব্যবহার করি নি, তাই ক্ষমা চাইছি যদি এই চিহ্নটি বন্ধ থাকে।


2
someList.First(); // exception if collection is empty.
someList.FirstOrDefault(); // first item or default(Type)

কোনটি ব্যবহার করবেন? এটি ব্যবসায়ের যুক্তি দ্বারা সিদ্ধান্ত নেওয়া উচিত, এবং ব্যতিক্রম / প্রোগ্রাম ব্যর্থতার ভয় নয়।

উদাহরণস্বরূপ, যদি ব্যবসায়িক যুক্তি বলে যে আমাদের কোনও কার্য দিবসে শূন্য লেনদেন থাকতে পারে না (কেবল অনুমান করুন)। তাহলে আপনার কিছু দৃশ্যের সাথে এই দৃশ্যটি হ্যান্ডেল করার চেষ্টা করা উচিত নয়। আমি এই জাতীয় সংগ্রহের জন্য সর্বদা ফার্স্ট () ব্যবহার করব এবং অন্য কিছু যদি ব্যবসায়িক যুক্তি দেখায় তবে প্রোগ্রামটি ব্যর্থ হয়ে যায়।

কোড:

var transactionsOnWorkingDay = GetTransactionOnLatestWorkingDay();
var justNeedOneToProcess = transactionsOnWorkingDay.First(): //Not FirstOrDefault()

আমি এই সম্পর্কে অন্যদের মন্তব্য দেখতে চাই।


রেফারেন্স এবং naclable প্রকারের জন্য ডিফল্ট মান নাল।
ডিএসএ

দ্রুত ব্যর্থ হওয়া ভাল - তবে আপনি বর্ণিত দৃশ্যের জন্য, আমি বরং প্রথমে দেখতে পাচ্ছি, ব্যর্থ হলে, ব্যতিক্রমটি ধরতে হবে এবং তারপরে একটি অর্থবহ ত্রুটি ফিরে পাবে। ক্যাচের মতো (অবৈধ অপারেশন এক্সপেকশন ই) new নতুন নতুন অবৈধবিক্ষিপ্ত ধারণা ফেলুন ("এক দিনে শূন্য লেনদেন থাকতে পারে না!", ই)}; তবে হ্যাঁ, একটি সত্যিকারের ব্যবসায়িক যুক্তির সমস্যা মোকাবেলা করতে এড়াতে ডিফল্ট ব্যবহার করা খুব খারাপ।
ম্যাথিসন

1

ঠিক আছে আমাকে আমার দুটি সেন্ট দিতে দিন। প্রথম / ফার্স্টফোর্ডাল্ট যখন আপনি দ্বিতীয় নির্মাণকারী ব্যবহার করেন তখন for আমি এটি কী তা ব্যাখ্যা করব না, তবে এটি যখন আপনি সম্ভাব্য সবসময় একটি ব্যবহার করেন কারণ আপনি কোনও ব্যতিক্রম ঘটাতে চান না।

person = tmp.FirstOrDefault(new Func<Person, bool>((p) =>
{
    return string.IsNullOrEmpty(p.Relationship);
}));

বেপারটা এমন না. প্রথম কন্সট্রাক্টর ব্যাপকভাবে ব্যবহৃত হয় যখন আপনাকে কেবলমাত্র একটি আইটেম পুনরুদ্ধার করতে হয় বা ফলাফলটি কোনও অ্যারে নয় এমন ক্ষেত্রে নির্ধারিত করার সময় সংকলন ত্রুটি এড়াতে হয় এবং আপনি নিশ্চিত হন যে ক্যোয়ারীটি ঠিক একটি ফল দেয়। যদিও অতিরিক্ত অতিরিক্ত ব্যবহার না করে দ্বিতীয় নির্মাতা ব্যবহার করা আরও দ্রুত দেখায় W কোথায় () (কারণ আপনি মনে করেন যে লিনকিউ প্রথমে সন্ধানের পরে তালিকার আইটেমগুলি মূল্যায়ন করা বন্ধ করে দেয়) এটি সর্বদা প্রথম উপাদানটিতে থামে
usr-local-ΕΨΗΕΛΩΝ

0

অন্যরা First()এবং এর মধ্যে পার্থক্যটি খুব ভালভাবে বর্ণনা করেছেন FirstOrDefault()। আমি এই পদ্ধতির শব্দার্থ ব্যাখ্যা করার জন্য আরও পদক্ষেপ নিতে চাই। আমার মতে FirstOrDefaultঅনেক বেশি ব্যবহার করা হচ্ছে। বেশিরভাগ ক্ষেত্রে আপনি যখন ডেটা ফিল্টার করে থাকেন আপনি লজিকাল অবস্থার সাথে মিল রেখে উপাদানগুলির সংগ্রহ বা তার অনন্য সনাক্তকারী - যেমন কোনও ব্যবহারকারী, বই, পোস্ট ইত্যাদি দ্বারা কোনও একক অনন্য উপাদান ফিরে পাওয়ার প্রত্যাশা করবেন would এটাই হ'ল এটি That's কেন আমরা এতদূর বলতে পারি যে FirstOrDefault()এটি কোডের গন্ধ নয় কারণ এটিতে কিছু ভুল আছে তবে এটি প্রায়শই ব্যবহৃত হচ্ছে। এই ব্লগ পোস্টটি বিশদে বিশদটি আবিষ্কার করে। আইএমও বেশিরভাগ সময়SingleOrDefault() একটি আরও ভাল বিকল্প তাই এই ভুলের জন্য নজর রাখুন এবং নিশ্চিত করুন যে আপনি সর্বাধিক উপযুক্ত পদ্ধতিটি ব্যবহার করেছেন যা স্পষ্টভাবে আপনার চুক্তি এবং প্রত্যাশাগুলিকে উপস্থাপন করে।


-6

সংগ্রহগুলিতে একক সাধারণ ক্যোয়ারী বাস্তবায়নের জন্য লিনক অনেকগুলি উপায়ে, আমরা কেবল এসকিএল-তে যোগ দিয়ে লিখি, একটি ফিল্টার প্রয়োজন বা প্রয়োজনীয়তার উপর নির্ভর করে প্রথমে বা শেষ প্রয়োগ করা যায়।

এখানে একটি উদাহরণ যেখানে আমরা একটি সংগ্রহে একটি আইডি সহ একটি উপাদান খুঁজে পেতে পারি। এটিতে আরও যুক্ত করার জন্য, পদ্ধতিগুলি প্রথমে, FirstOrDefaultআদর্শভাবে একই রকম হয় যখন কোনও সংকলনের কমপক্ষে একটি রেকর্ড থাকে। তবে, কোনও সংগ্রহ খালি রাখা ঠিক আছে। তারপরে Firstএকটি ব্যতিক্রম FirstOrDefaultফিরে আসবে তবে ফিরে আসবে nullবা ডিফল্ট হবে। উদাহরণস্বরূপ, int0 ফিরে আসবে। সুতরাং এর ব্যবহারটি ব্যক্তিগত পছন্দ হিসাবে বলা হলেও এটি FirstOrDefaultব্যতিক্রম হ্যান্ডলিং এড়ানোর জন্য ব্যবহার করা ভাল । এখানে আমরা উদাহরণস্বরূপ যেখানে লেনদেনের তালিকার একটি সংগ্রহকে পরিচালনা করি

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