সিস্টেমের রূপান্তর List তালিকাতে অ্যারে


279

গত রাতে আমি স্বপ্ন দেখেছিলাম যে নিম্নলিখিতটি অসম্ভব ছিল। কিন্তু একই স্বপ্নে, এসও থেকে কেউ আমাকে অন্যথায় বলেছিল। সুতরাং আমি এটি রূপান্তর System.Arrayকরা সম্ভব কিনা তা জানতে চাইList

Array ints = Array.CreateInstance(typeof(int), 5);
ints.SetValue(10, 0);
ints.SetValue(20, 1);
ints.SetValue(10, 2);
ints.SetValue(34, 3);
ints.SetValue(113, 4);

প্রতি

List<int> lst = ints.OfType<int>(); // not working

2
নীচে লিঙ্কটি দেখায় এটি কীভাবে সি # কোডগেটওয়ে ডটকম

6
Arrayএটি আসলে যা আছে তা আপনি নিক্ষেপ করতে হবে int[], তারপরে আপনি এটি ব্যবহার করতে পারেন ToList:((int[])ints).ToList();
টিম শ্মেলটার

উত্তর:


428

নিজেকে কিছুটা বেদনা বাঁচান ...

using System.Linq;

int[] ints = new [] { 10, 20, 10, 34, 113 };

List<int> lst = ints.OfType<int>().ToList(); // this isn't going to be fast.

কেবল ...

List<int> lst = new List<int> { 10, 20, 10, 34, 113 };

বা ...

List<int> lst = new List<int>();
lst.Add(10);
lst.Add(20);
lst.Add(10);
lst.Add(34);
lst.Add(113);

বা ...

List<int> lst = new List<int>(new int[] { 10, 20, 10, 34, 113 });

বা ...

var lst = new List<int>();
lst.AddRange(new int[] { 10, 20, 10, 34, 113 });

15
সম্পূর্ণতার জন্য দ্রষ্টব্য: 2 য় পদ্ধতিটি কেবল সি # 3.0+ এ উপলব্ধ।
জন সেগেল

21
ইনট অ্যারে ইতিমধ্যে প্রয়োগ করে IEnumerable<int>, এর OfType<int>()প্রয়োজন হয় না required ints.ToList();আল্লাহই যথেষ্ট।
হেইনজি

16
অফটাইপের জন্য আপনার দরকার সিস্টেম.লিনক
জেসনপ্লিটেক্সট

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

4
। Enum.GetValues (typeof (Enumtype)) কাস্ট <itemtype> () ToList ()।
ফান Đức Bình

84

তালিকার জন্য একটি কনস্ট্রাক্টর ওভারলোডও রয়েছে যা কাজ করবে ... তবে আমার ধারণা এটির জন্য শক্তিশালী টাইপযুক্ত অ্যারের প্রয়োজন হবে।

//public List(IEnumerable<T> collection)
var intArray = new[] { 1, 2, 3, 4, 5 };
var list = new List<int>(intArray);

... অ্যারে ক্লাসের জন্য

var intArray = Array.CreateInstance(typeof(int), 5);
for (int i = 0; i < 5; i++)
    intArray.SetValue(i, i);
var list = new List<int>((int[])intArray);

এই পদ্ধতির এবং ব্যবহারকারীর মধ্যে ToList()কোনটি আরও দক্ষ? নাকি পার্থক্য আছে?
বেন

1
আসল ডেটাসেটের আকারটি না জেনে বলা শক্ত (তালিকা অভ্যন্তরীণভাবে অ্যারেগুলি ব্যবহার করে যা প্রসারণ করতে সক্ষম হবে Ar অ্যারেগুলি অপরিবর্তনীয়) আপনি রক্ষণাবেক্ষণ করতে পছন্দ করেন এমন সংস্করণটিও ব্যবহার করতে পারে।
ম্যাথু 5:32

3
আপনি কি এই থ্রেডটি 6 বছরের পুরানো লক্ষ্য করেছেন? (এবং আমার দ্বিতীয় উত্তরটি তার Arrayপরিবর্তে ব্যবহারের উদাহরণটি সরাসরি পরিচালনা করে int[]))
ম্যাথু হোয়াইট

66

মজার বিষয় হল যে কেউ এই প্রশ্নের উত্তর দেয় না, ওপি দৃ strongly়ভাবে টাইপ করে না int[]তবে একটি ব্যবহার করেArray

Arrayএটি আসলে যা আছে তা আপনি কাস্ট করতে হবে, একটি int[], তারপরে আপনি ব্যবহার করতে পারেন ToList:

List<int> intList = ((int[])ints).ToList();

নোট নোটটি তালিকার কনস্ট্রাক্টরকেEnumerable.ToList কল করে যে প্রথমে এটি পরীক্ষা করে যদি আর্গুমেন্টটি কাস্ট করা যায় (যা একটি অ্যারে প্রয়োগ করে), তবে এটি ক্রমটি গণনার পরিবর্তে আরও কার্যকর পদ্ধতি ব্যবহার করবে ।ICollection<T>ICollection<T>.CopyTo


11
আপনাকে ধন্যবাদ, Enum.GetValuesএকটি অ্যারে ফেরত দেয় এবং এটি আমাকে এটিকে একটি তালিকা তৈরি করতে সহায়তা করে।
মার্টিন ব্রাউন

3
আমি জানি এটি পুরানো তবে আপনি সঠিক, প্রশ্নের উত্তর এই is আমার পরিস্থিতিতে একটি ডায়নামিক ডিসরিয়ালাইজার একটি সিস্টেম অ্যারে প্রদান করে কারণ এটি কোনও ধরণের ডেটা টাইপ গ্রহণ করার জন্য প্রস্তুত থাকতে হবে যাতে আপনি রানটাইম না হওয়া পর্যন্ত তালিকাটি প্রিললোড করতে পারবেন না। আপনাকে ধন্যবাদ
ফ্রাঙ্ক সিডেনো

27

সবচেয়ে সহজ পদ্ধতিটি হ'ল:

int[] ints = new [] { 10, 20, 10, 34, 113 };

List<int> lst = ints.ToList();

অথবা

List<int> lst = new List<int>();
lst.AddRange(ints);

7
এক প্রয়োজন using System.Linq;জন্য ToList()কাজ করতে।
জারেকচেজ

এটি কাজ করে না Array। আপনার এটি কাস্ট করা বা .Cast<>প্রথমে কল করা দরকার ।
ব্লুরাজা -

11

ক্ষেত্রে আপনি নীচের মতো করতে পারেন এমন একটি তালিকা হিসাবে এনামগুলির একটি অ্যারেটি ফিরিয়ে দিতে চান।

using System.Linq;

public List<DayOfWeek> DaysOfWeek
{
  get
  {
    return Enum.GetValues(typeof(DayOfWeek))
               .OfType<DayOfWeek>()
               .ToList();
  }
}

5

আপনি মূলত এটি পছন্দ করতে পারেন:

int[] ints = new[] { 10, 20, 10, 34, 113 };

এটি আপনার অ্যারে, এবং আপনি নিজের নতুন তালিকাকে কল করতে পারেন তার চেয়ে বেশি:

 var newList = new List<int>(ints);

আপনি জটিল বস্তুর জন্যও এটি করতে পারেন।


4

vb.net এ শুধু এটি করুন

mylist.addrange(intsArray)

অথবা

Dim mylist As New List(Of Integer)(intsArray)

2
অনেক OfType <> (আমার VS2010 কিছু OfType স্বীকার করতে চান না ...) ব্যবহার বেশী ভালো
সাব্বাস

3

আপনি কেবল আপনার কোডটিতে চেষ্টা করে দেখতে পারেন:

Array ints = Array.CreateInstance(typeof(int), 5);
ints.SetValue(10, 0);

ints.SetValue(20, 1);
ints.SetValue(10, 2);
ints.SetValue(34, 3);
ints.SetValue(113, 4);

int[] anyVariable=(int[])ints;

তারপরে আপনি যে কোনও পরিবর্তনশীল আপনার কোড হিসাবে ব্যবহার করতে পারেন।


2

কেবল বিদ্যমান পদ্ধতিটি ব্যবহার করুন .. .ToList ();

   List<int> listArray = array.ToList();

কিসস (আইটি সিম্পল স্যার রাখুন)


0

আমি আশা করি এই সহায়ক।

enum TESTENUM
    {
        T1 = 0,
        T2 = 1,
        T3 = 2,
        T4 = 3
    }

স্ট্রিংয়ের মান পান

string enumValueString = "T1";

        List<string> stringValueList =  typeof(TESTENUM).GetEnumValues().Cast<object>().Select(m => 
            Convert.ToString(m)
            ).ToList();

        if(!stringValueList.Exists(m => m == enumValueString))
        {
            throw new Exception("cannot find type");
        }

        TESTENUM testEnumValueConvertString;
        Enum.TryParse<TESTENUM>(enumValueString, out testEnumValueConvertString);

পূর্ণসংখ্যার মান পান

        int enumValueInt = 1;

        List<int> enumValueIntList =  typeof(TESTENUM).GetEnumValues().Cast<object>().Select(m =>
            Convert.ToInt32(m)
            ).ToList();

        if(!enumValueIntList.Exists(m => m == enumValueInt))
        {
            throw new Exception("cannot find type");
        }

        TESTENUM testEnumValueConvertInt;
        Enum.TryParse<TESTENUM>(enumValueString, out testEnumValueConvertInt);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.