তালিকাটিকে সি # তে স্ট্রিংয়ে রূপান্তর করুন


184

আমি কীভাবে একটি তালিকাটিকে সি # তে স্ট্রিংয়ে রূপান্তর করব?

আমি যখন toStringকোনও তালিকা অবজেক্টে চালিত করি তখন আমি পাই:

System.Collections.Generic.List`1 [System.String]


1
একটি তালিকা একটি সংগ্রহ, এই স্ট্রিংটি দেখতে কেমন হবে?
মার্কো

আপনি এখানে বর্ণিত তিনটি উপায়ে যেকোনও চেষ্টা করতে পারেন ।
আরবিটি

উত্তর:


363

হতে পারে আপনি চেষ্টা করছেন

string combindedString = string.Join( ",", myList.ToArray() );

আপনি তালিকার উপাদানগুলিকে যেভাবে বিভক্ত করতে চান তা দিয়ে "," প্রতিস্থাপন করতে পারেন।

সম্পাদনা করুন : মন্তব্যে উল্লেখ হিসাবে আপনিও করতে পারেন

string combindedString = string.Join( ",", myList);

রেফারেন্স:

Join<T>(String, IEnumerable<T>) 
Concatenates the members of a collection, using the specified separator between each member.

4
আপনার অর্থ কি স্ট্রিং কম্বাইন্ডড স্ট্রিং = স্ট্রিং J জয়ন (",", মাইলিস্ট.টোআররে ());
sawe

2
যুক্তি '2': 'সিস্টেম.কলেশনস.জেনারিক.লাইস্ট <স্ট্রিং>' থেকে 'স্ট্রিং []' তে রূপান্তর করতে পারে না
অ্যাশ

9
আমি এটি সম্প্রতি ব্যবহার করেছি, এটি কাজ করে - কেবলমাত্র টোটারাই বাদ দিন ()
অ্যাড্রিয়ান কে

3
@ অ্যাড্রিয়ানকে আপনি সঠিক বলেছেন কারণ নেট নেট 4.0.০ কোনও আইনিংরেবল <স্ট্রিং> এ পাস করার ক্ষমতা যুক্ত করেছে। তবে ৪.০ এপ্রিল, ২০১০ এ প্রকাশিত হয়েছিল, এই প্রশ্নোত্তর পোস্ট করার আগে সম্ভবত এখানকার লোকেরা এখনও এ সম্পর্কে অবগত ছিলেন না (নীচে কয়েকটা নীচে ব্যতীত)
অ্যান্ড্রু স্টিৎজ

Vb.net এর জন্য, স্ট্রিং হিসাবে স্ট্রেম = স্ট্রিং.জয়েন (",", মাইলিস্ট.টওআর্রে ())
পার্টটাইমনার্ড

55

আমি আমার অন্ত্র অনুভূতির সাথে যাচ্ছি এবং ধরে নিচ্ছি যে আপনি ToStringতালিকার প্রতিটি উপাদানকে ডাকার ফলাফলকে সম্মতি জানাতে চান ।

var result = string.Join(",", list.ToArray());

16

আপনি ব্যবহার করতে পারেন string.Join:

List<string> list = new List<string>()
{
    "Red",
    "Blue",
    "Green"
};

string output = string.Join(Environment.NewLine, list.ToArray());    
Console.Write(output);

ফলাফলটি হবে:

Red    
Blue    
Green

এর বিকল্প হিসাবে Environment.NewLine, আপনি এটিকে আপনার পছন্দের স্ট্রিং ভিত্তিক লাইন-বিভাজকের সাথে প্রতিস্থাপন করতে পারেন।


14

আপনি যদি সাধারণ যোগদানের চেয়ে কিছুটা জটিল কিছু চান তবে আপনি লিনকুই ব্যবহার করতে পারেন

var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");

["এ", "বি", "সি"] নেবে এবং "(ক) (খ) (গ)" উত্পাদন করবে


1
খালি সংগ্রহের জন্য অবৈধ অপসারণের ধারণাটি ছোঁড়াতে এড়াতে প্রথম প্যারামিটার হিসাবে একটি বীজের সাথে সমষ্টি ব্যবহার করুন।
হুয়ানাচা

13

String.Join(" ", myList)বা String.Join(" ", myList.ToArray())। প্রথম যুক্তিটি সাবস্ট্রিংগুলির মধ্যে বিভাজক।

var myList = new List<String> { "foo","bar","baz"};
Console.WriteLine(String.Join("-", myList)); // prints "foo-bar-baz"

আপনার .NET এর সংস্করণ অনুসারে আপনাকে প্রথমে তালিকায় ToArray () ব্যবহার করতে হতে পারে ..


9

আপনার কাছে একটি আছে List<string>- তাই যদি আপনি এগুলি সম্মিলিত করতে চান তবে এর মতো কিছু

string s = string.Join("", list);

(কমপক্ষে .NET 4.0 এ) কাজ করবে। প্রথম প্যারামিটারটি ডিলিমিটার। সুতরাং আপনি কমা-সীমানা ইত্যাদি করতে পারে

আপনি তালিকা তৈরির পরিবর্তে স্ট্রিংবিল্ডার ব্যবহার করে চলমান সংক্ষেপণ করতেও নজর রাখতে পারেন।


8

.ToString()রেফারেন্স ধরনের জন্য পদ্ধতি সাধারণত ফিরে সমাধান করা System.Object.ToString()যদি না আপনি একটি উদ্ভূত ধরনের ওভাররাইড (সম্ভবত বিল্ট-ইন ধরনের জন্য এক্সটেনশন পদ্ধতি ব্যবহার করে)। এই পদ্ধতির জন্য ডিফল্ট আচরণ হ'ল ধরণের নামটি আউটপুট করা। সুতরাং আপনি যা দেখছেন তা প্রত্যাশিত আচরণ।

আপনি string.Join(", ", myList.ToArray());এটি অর্জন করার মতো কিছু চেষ্টা করতে পারেন । এটি একটি অতিরিক্ত পদক্ষেপ, তবে এটি System.Collections.Generic.List<T>কিছুটা সহজ করার জন্য এটি একটি এক্সটেনশন পদ্ধতিতে রাখা যেতে পারে । এটার মতো কিছু:

public static class GenericListExtensions
{
    public static string ToString<T>(this IList<T> list)
    {
        return string.Join(", ", list);
    }
}

(দ্রষ্টব্য যে এটি নিখরচায় এবং অনির্ধারিত কোড। এই মুহূর্তে আমার কাছে কোনও সংকলক কার্যকর নেই So সুতরাং আপনি এটির সাথে কিছুটা পরীক্ষা করতে চাইবেন))


যখন আমি এটিকে টুস্ট্রিং না বলি বা জেনেরিক প্যারামিটার দিয়ে এটি চালায় তখন এটি কাজ করে। তবে আমি আপনার এক্সটেনশন পদ্ধতিটি ব্যবহার করার ধারণাটি পছন্দ করি :)
আইএডাপ্টার

4

এটি বলা শক্ত, তবে সম্ভবত আপনি এর মতো কিছু খুঁজছেন:

var myString = String.Join(String.Empty, myList.ToArray());

এটি সুস্পষ্টভাবে তালিকার প্রতিটি আইটেমের ToString () পদ্ধতিতে কল করবে এবং তাদেরকে সম্মতি জানাবে।


1
String.Concat()একই জিনিস আরও ভাল অর্জন করবে।
জেফ মার্কাডো


2

আপনি একটি বড় দীর্ঘ স্ট্রিং মধ্যে একটি তালিকায় আইটেমগুলি ঘুরে বেরাচ্ছেন, তাহলে এই কাজগুলো করুন: String.Join("", myList)। ফ্রেমওয়ার্কের কিছু পুরানো সংস্করণ আপনাকে দ্বিতীয় প্যারামিটার হিসাবে কোনও IEnumerable পাস করার অনুমতি দেয় না, তাই .ToArray () কল করে আপনার তালিকাটি একটি অ্যারেতে রূপান্তর করতে হতে পারে calling


2

আপনার প্রশ্নের সরাসরি উত্তর হ'ল String.Joinঅন্যরা যেমন উল্লেখ করেছে।

তবে আপনার যদি কিছু হেরফের দরকার হয় তবে আপনি ব্যবহার করতে পারেন Aggregate:

List<string> employees = new List<string>();
employees.Add("e1");
employees.Add("e2");
employees.Add("e3");

string employeesString = "'" + employees.Aggregate((x, y) => x + "','" + y) + "'";
Console.WriteLine(employeesString);
Console.ReadLine();

1
উত্পাদন কোডে আপনার তালিকার কোনও উপাদান রয়েছে তা নিশ্চিত করুন অন্যথায় এটি ব্যতিক্রম ছুঁড়ে দেবে।
এজেড_

1

এই পদ্ধতিটি আমাকে পাঠ্য ফাইল থেকে ডেটা পুনরুদ্ধার করার চেষ্টা করেছিল এবং অ্যারেতে এটি সংরক্ষণ করে তারপরে এটি স্ট্রিংকে উপলভ্য হিসাবে নির্ধারণ করে।

string[] lines = File.ReadAllLines(Environment.CurrentDirectory + "\\Notes.txt");  
string marRes = string.Join(Environment.NewLine, lines.ToArray());

আশা করি কাউকে সাহায্য করতে পারেন !!!!


0

এটি আমার পক্ষে কাজ করে বলে মনে হচ্ছে।

var combindedString = new string(list.ToArray());

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