অবজেক্টের তালিকা থেকে সম্পত্তিটির অনন্য তালিকা পেতে আমি কীভাবে লিনক ব্যবহার করব?


171

আমি লিনক ব্যবহার করার চেষ্টা করছি আইডির একটি সম্পত্তি দেওয়া আইডির একটি তালিকা দেওয়া আইডির একটি তালিকা ফিরিয়ে দিতে। আমি প্রতিটি বস্তুর মধ্যে লুপিং না করে এবং আমি যে অনন্য আইডি খুঁজে পাই তা খুঁজে না পেয়ে এটি করতে সক্ষম হতে চাই।

আমার কাছে মাই ক্লাস টাইপের অবজেক্টগুলির একটি তালিকা রয়েছে এবং এই শ্রেণীর বৈশিষ্ট্যগুলির মধ্যে একটি আইডি।

public class MyClass
{
  public int ID { get; set; }
}

আমি যা করতে চাই তা হল those আইডির তালিকা আমাকে ফিরিয়ে দিতে একটি লিনক কোয়েরি লিখুন

আমি কীভাবে করব IList<MyClass>যে এটির একটি IEnumerable<int>এইডস ফেরত দেয়?

আমি নিশ্চিত যে মাইক্লাস তালিকার প্রতিটি আইটেমের মধ্যে লুপিংয়ের পরিবর্তে এবং লিঙ্কে অনন্য মানগুলি তালিকায় যুক্ত করার পরিবর্তে লিনক ব্যবহার করে এটি এক বা দুটি লাইনে করা সম্ভব হবে।

একটি মার্জিত সমাধান তৈরিতে যে কোনও সহায়তা প্রশংসিত হবে!


1
এছাড়াও মনে রাখবেন আপনি আছে DistinctByমধ্যে MoreLinq আপনি স্বতন্ত্র দেব যা MyClassগুলি উপর ভিত্তি করে ID। ব্যবহার:var distincts = list.DistinctBy(x => x.ID);
নওফাল

উত্তর:


319
IEnumerable<int> ids = list.Select(x=>x.ID).Distinct();

কি দারুন! আমি ভেবেছিলাম এটি কিছু সহজ ... আমি কেবল এটি ভাবতে পারি না। দেখে মনে হচ্ছে আমাকে লিনকের সাথে নিজেকে পরিচিত করতে আরও কিছুটা সময় ব্যয় করতে হবে।
মেজয়েড

29

বিচ্ছিন্ন অপারেটরটি ব্যবহার করুন :

var idList = yourList.Select(x=> x.ID).Distinct();

5
(ছোট নামকরণের পয়েন্ট; এটি আইডির একটি "তালিকা" নয় - এটি একটি অলসভাবে মূল্যায়নযোগ্য আইনিম্যুয়াল <int> - যদি আপনি কল না করেন oToList () অবশ্যই ;-p)
মার্ক গ্র্যাভেল

@ মার্ক, অলস ইওল সম্পর্কে একটি সহজ 2 লাইন ব্যাখ্যা? দয়া করে এবং ধন্যবাদ: ডি
মাসফেনিক্স

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

13

এক্সটেনশন সহ স্ট্রেইট লিনক ব্যবহার Distinct():

var idList = (from x in yourList select x.ID).Distinct();

3
        int[] numbers = {1,2,3,4,5,3,6,4,7,8,9,1,0 };
        var nonRepeats = (from n in numbers select n).Distinct();


        foreach (var d in nonRepeats)
        {

            Response.Write(d);
        }

আউটপুট

1234567890


1
প্রশ্নের উত্তর দেয় না, এবং তা করলেও নতুন কিছু যোগ করে না।
নওফাল

2

বিচ্ছিন্নতা নেওয়ার সময় আমাদেরকেও খুব পরিমাণে ফেলে দিতে হবে। যদি তালিকাটি মডেল মানে হয় তবে এই জাতীয় কোড লিখতে হবে

 IEnumerable<T> ids = list.Select(x => x).Distinct();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.