তালিকা <স্ট্রিং> এর সমস্ত স্ট্রিংগুলিকে কীভাবে লিনকিউ ব্যবহার করে লোয়ার কেস এ রূপান্তর করবেন?


95

আমি গতকাল স্ট্যাকওভারফ্লোতে এখানে প্রতিক্রিয়াগুলির একটিতে একটি কোড স্নিপেট দেখেছি যা আমাকে আগ্রহী করেছিল। এটি এমন কিছু ছিল:

 List<string> myList = new List<string> {"aBc", "HELLO", "GoodBye"};

 myList.ForEach(d=>d.ToLower());

আমি আশা করছিলাম যে আমি এটি আমার মাইলিস্টে থাকা সমস্ত আইটেমকে ছোট হাতের মধ্যে রূপান্তর করতে ব্যবহার করতে পারি। যাইহোক, এটি ঘটে না ... এটি চালানোর পরে, মাইলিস্টে আবরণটি অপরিবর্তিত।

সুতরাং আমার প্রশ্নটি লিনকু এবং ল্যাম্বডা এক্সপ্রেশনগুলি ব্যবহার করে কোনও উপায় আছে কিনা তা সহজেই পুনরাবৃত্তি করতে এবং তালিকার বিষয়বস্তুগুলিকে এর অনুরূপভাবে সংশোধন করতে।

ধন্যবাদ, সর্বোচ্চ

উত্তর:


186

সবচেয়ে সহজ পদ্ধতির:

myList = myList.ConvertAll(d => d.ToLower());

আপনার উদাহরণ কোডের চেয়ে খুব বেশি আলাদা নয়। ForEachমূল তালিকাটি লুপ করে সেখানে ConvertAllনতুন একটি তৈরি করে যা আপনাকে পুনরায় সাইন ইন করতে হবে।


4
কোনও এক্সটেনশন পদ্ধতি নয়।
লেপি

@ লেপ্পি: সত্য, এটি ভাল না - ভাল ধরা। এক্ষেত্রে, এটি কোনও উদাহরণ পদ্ধতি বা কোনও এক্সটেনশন পদ্ধতি কিনা তা নিয়ে চিন্তিত হওয়া কিছুটা পেডেন্টিক হতে পারে তবে এটি অবশ্যই সঠিক। :)
জেসন বুটিং

এবং স্ট্রিং পরিবর্তনযোগ্য: পি
শার্লক

49

এটা এ কারণে যে ToLower এর ফেরৎ মূল স্ট্রিং রূপান্তর চেয়ে ছোট হাতের স্ট্রিং বরং। সুতরাং আপনি এই জাতীয় কিছু চাই:

List<string> lowerCase = myList.Select(x => x.ToLower()).ToList();

4
আমি গ্রহণযোগ্য উত্তরের চেয়ে এই পদ্ধতির পছন্দ করি কারণ আপনি এটি কেবল তালিকা <স্ট্রিং> নয়, কোনও যেকোন প্রাথমিক <স্ট্রিং> দিয়ে ব্যবহার করতে পারেন।
জোশুয়া পেচ

6
এই সমাধানটি। নেট কোরেও কাজ করে, কনভার্টএল .NET কোরটিতে নেই।
জোনাস

3
[TestMethod]
public void LinqStringTest()
{
    List<string> myList = new List<string> { "aBc", "HELLO", "GoodBye" };
    myList = (from s in myList select s.ToLower()).ToList();
    Assert.AreEqual(myList[0], "abc");
    Assert.AreEqual(myList[1], "hello");
    Assert.AreEqual(myList[2], "goodbye");
}

3

ForEachব্যবহার করে Action<T>, যার অর্থ xএটি অপরিবর্তনীয় না হলে আপনি প্রভাবিত করতে পারেন। যেহেতু xএটি একটি string, এটি পরিবর্তনযোগ্য, সুতরাং ল্যাম্বডায় আপনি এটি কিছু করবেন না কারণ এর বৈশিষ্ট্যগুলি পরিবর্তন হবে। ক্রেলেসার সমাধানটি আপনার সেরা বিকল্প যদি না আপনি নিজের এক্সটেনশন পদ্ধতিটি প্রয়োগ করতে চান যা আপনাকে প্রতিস্থাপনের মান ফেরত দিতে দেয়।


আপনি যদি নিশ্চিত না হন তবে আরও গবেষণা করুন ... কিছু মনে আছে?
প্যাট্রিক দেশজার্ডিনস

ত্রুটিটি মানুষের, আমি যে লিঙ্কটি দিয়েছিলাম তাতে bold.৫ ছিল এবং স্বাভাবিকভাবে 2.0 ছিল, আমি এটি দেখতে পাই নি। আমি আমার পোস্টটি মুছে ফেলেছি ... আপনার কাছ থেকে একটি সহজ মন্তব্য যথেষ্ট ছিল। আপনি এখন অনুমানের চেয়ে অকারণে ডাউনভোট করতে চান।
প্যাট্রিক দেশজার্ডিনস

যদিও আমি এটি প্রায় এক বছর পরে লিখছি, এবং যদিও আমি দাউক নই, আমি আপনাকে বলব কেন আপনার উত্তরটি "ভুল" - আপনি যখন বলেছিলেন যে "ক্যারলেসার সমাধানটি আপনার সেরা বিকল্প" এটি তখন নয় - আমার সমাধানটি ক্লিনার এবং পরিষ্কার।
জেসন বুটিং

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