তালিকা <T> উপাদানটিতে একটি বিশেষ সম্পত্তি মান সহ কোনও আইটেম রয়েছে কিনা তা কীভাবে পরীক্ষা করবেন


113
public class PricePublicModel
{
    public PricePublicModel() { }

    public int PriceGroupID { get; set; }
    public double Size { get; set; }
    public double Size2 { get; set; }
    public int[] PrintType { get; set; }
    public double[] Price { get; set; }
}

List<PricePublicModel> pricePublicList = new List<PricePublicModel>();

উপাদানটির pricePublicListনির্দিষ্ট মান রয়েছে কিনা তা কীভাবে পরীক্ষা করবেন । আরও সুনির্দিষ্টভাবে বলতে গেলে, আমি সেখানে উপস্থিত কিনা তা পরীক্ষা করে দেখতে চাই pricePublicModel.Size == 200? এছাড়াও, যদি এই উপাদানটি বিদ্যমান থাকে তবে এটি কীভাবে এটি জানবেন?

সম্পাদনা যদি অভিধান এর জন্য আরও উপযুক্ত হয় তবে আমি অভিধানটি ব্যবহার করতে পারতাম, তবে আমার কীভাবে জানতে হবে :)

উত্তর:


186

যদি আপনার একটি তালিকা থাকে এবং আপনি জানতে চান যে তালিকার মধ্যে এমন একটি উপাদান উপস্থিত রয়েছে যা প্রদত্ত মানদণ্ডের সাথে মেলে তবে আপনি FindIndexউদাহরণ পদ্ধতিটি ব্যবহার করতে পারেন । যেমন

int index = list.FindIndex(f => f.Bar == 17);

f => f.Bar == 17ম্যাচের মানদণ্ডের সাথে একটি শিকারী যেখানে ।

আপনার ক্ষেত্রে আপনি লিখতে পারেন

int index = pricePublicList.FindIndex(item => item.Size == 200);
if (index >= 0) 
{
    // element exists, do what you need
}

1
আমি যদি সেই মানের বৈশিষ্ট্যটি না জানি? উদাহরণস্বরূপ আমার কাছে একটি তালিকা আইটেম রয়েছে যা "18.00" প্রদর্শন করছে আমি জানি না এটি কোথা থেকে আসছে তাই আমি যাচাই করতে চাই যা বিশিষ্টতার এই মান আছে? তাই মূলত, এবং একই উদাহরণে আমার কাছে। সাইজ বা .বার নেই আমি এটি বের করতে চাই
হাইথাম কারাউই

আইটেমটি না থাকলে কী হবে: সূচকের মানটি কী হবে?
বিকেএসপুরজন

8
দ্রষ্টব্য: যদি উপাদানটি উপস্থিত না থাকে findIndexতবে ফিরে আসবে –1। ডকুমেন্টেশন: msdn.microsoft.com/es-es/library/x1xzf2ca(v=vs.110).aspx
tomloprod

1
@ টমলপ্রড সেজন্য তিনি শূন্যের চেয়ে বড় বা সমান সূচকটি পরীক্ষা করেন। যদি (সূচক> = 0) হয়। এটি লিখতে পারত যেন (সূচি> -১)।
ড্যানিসি

127
bool contains = pricePublicList.Any(p => p.Size == 200);

6
এটি বিদ্যমান কিনা তা কঠোরভাবে দেখার জন্য।
ড্যানিয়েল এ। হোয়াইট

3
এটি আসলে প্রশ্নের উত্তর দেয় না। তিনি বলেছিলেনhow to know which one is it
জর্জ জনস্টন

15
তার প্রশ্নের উত্তর নাও দিতে পারে, তবে এটি অবশ্যই আমাকে সহায়তা করেছিল, কারণ আমার সংগ্রহে একটি নির্দিষ্ট নামের কোনও বস্তু ইতিমধ্যে বিদ্যমান কিনা তা আমার দেখার দরকার ছিল। আমি উন্নত প্রত্যাশা করলাম .আপনি-পদ্ধতি - এবং এই লিনকিউ-এক্সপ্রেশনটি ঠিক এটিই করে। ধন্যবাদ.
ইগোর

3
এটি শিরোনামে প্রশ্নের উত্তর দেয় । ওপি তার বিবরণে ব্যাখ্যা করেছেন যে তিনি যা বলেছেন তিনি যা চান তা তিনি আসলেই চান না। তবুও, তার মধ্যে একজন রয়েছেন, এবং আমরা কয়েকজন গুগলের মাধ্যমে এই প্রশ্নটি সন্ধান করছি। আমি মনে করি এটি আরও গুরুত্বপূর্ণ যে আমরা তাঁর শিরোনাম প্রশ্নের আসল উত্তর খুঁজে পেতে সক্ষম হব।
MGOwen

5
যদি কেউ এটির চেষ্টা করে এবং .এর () কোনও স্বীকৃত না হয়, আপনাকে System.Linq ব্যবহার করে যুক্ত করতে হবে ; আপনার ফাইলের শীর্ষে।
এমজিওউইন

32

আপনি বিদ্যমান ব্যবহার করতে পারেন

if (pricePublicList.Exists(x => x.Size == 200))
{
   //code
}

13

এটি লিনকিউ ব্যবহার করে করা বেশ সহজ:

var match = pricePublicList.FirstOrDefault(p => p.Size == 200);
if (match == null)
{
    // Element doesn't exist
}

এই অবস্থার সাথে মেলে এমন উপাদানটি সরাসরি সম্পাদনা করা কি সম্ভব? এটি পেতে এবং নতুন অবজেক্টে সঞ্চয় করার জন্য নয়, তবে সরাসরি পরিবর্তন করবেন?
ইলিজ ভেসেলিকা

প্রত্যাশিত matchমানটি সংশোধন করা যায় (এটি সেই PricePublicModelবস্তু যা তালিকায় ছিল)।
জ্যাকব

আপনার সরাসরি এমন কোনও বস্তু সংশোধন করা উচিত নয় যা শূন্য হতে পারে। আপনি সর্বদা করতে পারেন: match.Size = 300;বা foreach(var item in pricePublicList.Where(p => p.Size == 200)) item.Size = 300;। যদিও এটি নিজেকে ওয়ান-লাইনার হিসাবে ব্যবহার করবে না।
অ্যামি ওয়েস্ট

11

আপনি আসলে LINQ প্রয়োজন হবে না এই কারণ List<T>একটি পদ্ধতি যে ঠিক আছে আপনি যা চান তা প্রদান করে: Find

নির্দিষ্ট প্রাকটিকেটের দ্বারা নির্ধারিত শর্তগুলির সাথে মেলে এমন একটি উপাদানের সন্ধান করে এবং পুরোটির মধ্যে প্রথম উপস্থিতি ফিরে আসে List<T>

উদাহরণ কোড:

PricePublicModel result = pricePublicList.Find(x => x.Size == 200);

4
var item = pricePublicList.FirstOrDefault(x => x.Size == 200);
if (item != null) {
   // There exists one with size 200 and is stored in item now
}
else {
  // There is no PricePublicModel with size 200
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.