আমি কীভাবে তালিকার তালিকা থেকে তালিকাগুলি অনুলিপি করতে পারি?


318

আমি কীভাবে Listসি # তে একের মধ্যে থাকা আইটেমগুলি অন্যটিতে স্থানান্তর করব foreach?


3
: আপনি মূল তালিকার একটি গভীর ক্লোন প্রয়োজন যদি আপনি এই সংশ্লিষ্ট প্রশ্নে উত্তর পাবেন stackoverflow.com/questions/222598/...
— ডির্ক Vollmar

উত্তর:


554

আপনি এটি চেষ্টা করতে পারেন:

List<Int32> copy = new List<Int32>(original);

অথবা আপনি যদি লিনকের সাথে সি # 3 এবং .NET 3.5 ব্যবহার করেন তবে আপনি এটি করতে পারেন:

List<Int32> copy = original.ToList();

14
আইটেমগুলি MyClassপরিবর্তে প্রকারভেদ থাকলে Integer, এটি কী আইটেমগুলি খুব কপি করে, বা কেবল তাদের রেফারেন্স করে?
— পেড্রো মোরেইরা

5
অ-আদিম ধরণের সাথে কাজ করছে না। তালিকা <স্টুডেন্টক্লাস> অনুলিপি = নতুন তালিকা <স্টুডেন্টক্লাস> (# স্টুডেন্টক্লাস);
— চটকদার

4
এটা সব ধরনের সঙ্গে কাজ করে, যতদিন lstStudentClassএকজন IEnumerable<StudentClass>, এটা কাজ করবে। আপনি যদি অন্যথায় অভিজ্ঞতা পান তবে আপনাকে আরও তথ্য সরবরাহ করতে হবে।
— লাসে ভি কার্লসেন

1
(মূল) এর অর্থ কী; শেষে
— রাহুল চৌধারি

1
আপনি একটি সংগ্রহ তালিকার কনস্ট্রাক্টারে পাস করুন এবং কনস্ট্রাক্টর সেই সংকলনের সমস্ত উপাদানকে নতুন তৈরি তালিকায় অনুলিপি করবেন।
— লাসে ভি কার্লসেন

170

ইতিমধ্যে বিদ্যমান অন্য তালিকায় একটি তালিকার বিষয়বস্তু যুক্ত করতে আপনি ব্যবহার করতে পারেন:

targetList.AddRange(sourceList);

আপনি যদি কেবল তালিকার একটি নতুন অনুলিপি তৈরি করতে চান তবে লাসির উত্তর দেখুন।


6
@ মিঃমিলসি: আচ্ছা তারা বিভিন্ন কাজ করে। আমার উত্তরটি "আমার কাছে ইতিমধ্যে একটি তালিকা আছে এবং আমি এটিতে অনুলিপি করতে চাই"
— স্কেট

সত্য। আমার প্রশ্নটি যাইহোক কোনও নতুন প্রশ্নের পক্ষে সম্ভবত আরও উপযুক্ত। যদিও উত্তর দেওয়ার জন্য ধন্যবাদ।
— mrmillsy

1
আপনি যদি বিদ্যমান তালিকার বিষয়বস্তুগুলি সম্পূর্ণরূপে প্রতিস্থাপন করতে চান তবে আপনি টার্গেটলিস্টকে কল করুন lear ক্লিয়ার () প্রথমে।
— ইব্রাহিম

33

উপাদানগুলির তালিকার জন্য

List<string> lstTest = new List<string>();

lstTest.Add("test1");
lstTest.Add("test2");
lstTest.Add("test3");
lstTest.Add("test4");
lstTest.Add("test5");
lstTest.Add("test6");

আপনি যদি সমস্ত উপাদান কপি করতে চান

List<string> lstNew = new List<string>();
lstNew.AddRange(lstTest);

আপনি যদি প্রথম 3 টি উপাদান অনুলিপি করতে চান

List<string> lstNew = lstTest.GetRange(0, 3);

5

এবং এটি হ'ল যদি কোনও একক সম্পত্তি অন্য তালিকায় অনুলিপি করা প্রয়োজন:

targetList.AddRange(sourceList.Select(i => i.NeededProperty));

4

এই পদ্ধতিটি আপনার তালিকার একটি অনুলিপি তৈরি করবে তবে আপনার ধরণটি সিরিয়ালযোগ্য হওয়া উচিত।

ব্যবহার করুন:

List<Student> lstStudent = db.Students.Where(s => s.DOB < DateTime.Now).ToList().CopyList(); 

পদ্ধতি:

public static List<T> CopyList<T>(this List<T> lst)
    {
        List<T> lstCopy = new List<T>();
        foreach (var item in lst)
        {
            using (MemoryStream stream = new MemoryStream())
            {
                BinaryFormatter formatter = new BinaryFormatter();
                formatter.Serialize(stream, item);
                stream.Position = 0;
                lstCopy.Add((T)formatter.Deserialize(stream));
            }
        }
        return lstCopy;
    }

সিরিয়ালাইজেশন কি একটি গুরুত্বপূর্ণ পারফরম্যান্স পেনাল্টি তৈরি করে?
— ড্যান ডেফ

0

ঠিক আছে এটি ভালভাবে কাজ করছে উপরের পরামর্শগুলি থেকে getRange () আমার পক্ষে যুক্তি হিসাবে একটি তালিকা নিয়ে কাজ করে না ... সুতরাং উপরের পোস্টগুলি থেকে কিছুটা মিষ্টি করা: (সবাইকে ধন্যবাদ :)

/*  Where __strBuf is a string list used as a dumping ground for data  */
public List < string > pullStrLst( )
{
    List < string > lst;

    lst = __strBuf.GetRange( 0, __strBuf.Count );     

    __strBuf.Clear( );

    return( lst );
}

2
এটি এমনকি একটি উত্তর না।
— ম্যাকিয়েজ জুরেস্কো

মিমি ... ঠিক আছে উপরের কিছু পরামর্শ কেবল ভিস 17 এ কাজ করে না আমি প্রদত্ত সেরা উত্তরটি সাফ করে দিয়েছি ... এবং হি প্রেস্টো ... এটি কাজ করে :)
— জিম স্টিভেন্স

0

লুপ ছাড়াই লিনাক দ্বারা তালিকার বিভিন্ন সেট মানচিত্র করা সহজ

var List1= new List<Entities1>();

var List2= new List<Entities2>();

var List2 = List1.Select(p => new Entities2
        {
            EntityCode = p.EntityCode,
            EntityId = p.EntityId,
            EntityName = p.EntityName
        }).ToList();

-9

এখানে অন্য পদ্ধতি কিন্তু এটি অন্য তুলনায় কিছুটা খারাপ worse

List<int> i=original.Take(original.count).ToList();

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