string tags = "9,3,12,43,2"
List<int> TagIds = tags.Split(',');
এটি কাজ করে না কারণ বিভক্ত পদ্ধতিটি একটি স্ট্রিং দেয় []
string tags = "9,3,12,43,2"
List<int> TagIds = tags.Split(',');
এটি কাজ করে না কারণ বিভক্ত পদ্ধতিটি একটি স্ট্রিং দেয় []
উত্তর:
এটি করার একটি উপায় এখানে:
List<int> TagIds = tags.Split(',').Select(int.Parse).ToList();
List<int> TagIds = new List<int>(tags.Split(',').Select(int.Parse));
new List<>
?
ToList()
পরিবর্তে কল করতে পারে ; ফলাফলটি মূলত একই: List<int> TagIds = tags.Split(',').Select(int.Parse).ToList();
আপনার একটি বা অন্যটি করা দরকার, যদিও এর ফিরতি মূল্য Select()
হ'ল একটি IEnumerable<>
, তবে একটি নয়List<>
Select
এই ক্ষেত্রে এক্সটেনশানটি ফিরে আসায় IEnumerable<Int32>
এবং এটি তালিকাভুক্ত নয়। তবে তালিকার একজন কনস্ট্রাক্টর রয়েছে যা উত্স হিসাবে অন্য সংগ্রহকে গ্রহণ করে।
Split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries)
আপনি যদি কিছু সাধারণ বৈধতা অন্তর্ভুক্ত করতে চান এবং অবৈধ মানগুলি (একটি ব্যতিক্রম ছোঁড়ার পরিবর্তে) বাদ দেন তবে ট্রাইপার্স ব্যবহার করে এমন কিছু এখানে রয়েছে:
string csv = "1,2,3,4,a,5";
int mos = 0;
var intList = csv.Split(',')
.Select(m => { int.TryParse(m, out mos); return mos; })
.Where(m => m != 0)
.ToList();
//returns a list with integers: 1, 2, 3, 4, 5
সম্পাদনা: এন্টোইনের প্রতিক্রিয়ার ভিত্তিতে এখানে একটি আপডেট করা ক্যোয়ারী রয়েছে। এটি কোনও খারাপ মান ফিল্টার করার জন্য প্রথমে ট্রিপ পার্সিকে কল করে এবং তারপরে প্রকৃত রূপান্তরটি করতে পার্সকে বলে।
string csv = "1,2,3,4,a,5,0,3,r,5";
int mos = 0;
var intList = csv.Split(',')
.Where(m => int.TryParse(m, out mos))
.Select(m => int.Parse(m))
.ToList();
//returns a list with integers: 1, 2, 3, 4, 5, 0, 3, 5
সম্পাদনা 2: সি # 7.0 এর জন্য একটি আপডেট হওয়া ক্যোয়ারী, চার্লস বার্নসের প্রতিক্রিয়ার জন্য ধন্যবাদ। নোট করুন যে আমরা এই পদ্ধতির সাহায্যে অতিরিক্ত মোশ ভেরিয়েবল থেকে মুক্তি পেয়েছি, তাই এটি কিছুটা পরিষ্কার।
string csv = "1,2,3,4,a,5,0,3,r,5";
var intList = csv.Split(',')
.Where(m => int.TryParse(m, out _))
.Select(m => int.Parse(m))
.ToList();
int.TryParse(m, out int _)
আপনি লিনিকিউ ডাব্লু / ব্যবহার করতে পারেন এটিকে int.Parse()
রূপান্তর string[]
করতে IEnumerable<int>
এবং তারপরে ফলাফলটি List<T>
কনস্ট্রাক্টরে পাস করতে পারেন :
var tagIds = new List<int>(tags.Split(',').Select(s => int.Parse(s)));
একটু লিনিকিউ অনেক দূর এগিয়ে যায়:
List<int> TagIds = tags.Split(',')
.Select(t => int.Parse(t))
.ToList();
লিনকুইয়ের জিজ্ঞাসা ছাড়াই আপনি এই পদ্ধতিটি চয়ন করতে পারেন,
string tags = "9,3,12,43,2";
List<string> numbers = nos.Split(',').ToList<string>();
এবং তারপরে আপনি এই তালিকাটিকে পূর্ণসংখ্যার ধরণে রূপান্তর করতে পারেন ...
.ToList<string>()
এখনও প্রয়োজনusing System.Linq;
string tags = "9,3,12,43,2"
List<int> TagIds = tags.Split(',').Select(x => x.Trim()).Select(x=> Int32.Parse(x)).ToList();
.Select(x => x.Trim()
, কারণ পার্স স্বয়ংক্রিয়ভাবে আপনার জন্য কোনও স্থানের অক্ষর ছাঁটাই করে ।
আপনি যদি সি # 3.5 ব্যবহার করেন তবে এটি অর্জনের জন্য আপনি লিনক ব্যবহার করতে পারেন
string tags = "9,3,12,43,2";
List<int> tagIds = tags.Split(',').Select(s=>int.Parse(s)).ToList();
বা সংক্ষিপ্ত এক
string tags = "9,3,12,43,2";
List<int> tagIds = tags.Split(',').Select(int.Parse).ToList();
string tags = "9,3,12,43,2";
List<int> TagIds = tags.Split(',').Select(int.Parse).ToList();
আমি খালিদ 13 এর উত্তরে একটি পরিবর্তন করেছি। যদি ব্যবহারকারী "0" এর স্ট্রিং রাখেন তবে তার উত্তর ফলাফলের তালিকা থেকে তা সরিয়ে ফেলবে। আমি অনুরূপ কিছু করেছি তবে একটি বেনামি বস্তু ব্যবহার করেছি।
var result = commaSeparatedString.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(s => new { didConvert = int.TryParse(s.TrimNullProtection(), out convertedInt), convertedValue = convertedInt })
.Where(w => w.didConvert)
.Select(s => s.convertedValue)
.ToList();
ট্রিমনলপ্রোটেকশন হ'ল একটি কাস্টম ফাংশন যা আমি স্ট্রিংটি শূন্য থাকলে সুরক্ষিত করে।
উপরেরটি যা করে তা হ'ল যে কোনও স্ট্রিংগুলি কোনও ত্রুটি ছাড়াই রূপান্তরিত করতে সক্ষম ছিল না। যদি রূপান্তরটিতে কোনও সমস্যা হয় তবে আপনার যদি ত্রুটির প্রয়োজন হয় তবে গ্রহণযোগ্য উত্তরটি কৌশলটি করা উচিত।
আমি এতে হোঁচট খেয়েছি এবং আমি লিনক ছাড়াই নিজের সমাধানটি ভাগ করতে চাই। এটি একটি আদিম পদ্ধতি। অ-পূর্ণসংখ্যার মানগুলিও তালিকায় যুক্ত হবে না।
List<int> TagIds = new List<int>();
string[] split = tags.Split(',');
foreach (string item in split)
{
int val = 0;
if (int.TryParse(item, out val) == true)
{
TagIds.Add(val);
}
}
আশাকরি এটা সাহায্য করবে.
ইহা সহজ. প্রথমে স্ট্রিংটি বিভক্ত করুন। কমা (,) এর পরে ফাঁকা স্থানটি ট্রিম করুন। তারপরে ToList সংজ্ঞায়িত সিস্টেমটি ব্যবহার করুন ()
string TradeTypeEnum = "Physical Deal, Physical Concentrate"
',' এর পরে স্থানটি সরাতে এবং এই কমা বিচ্ছিন্ন পাঠ্যটিকে তালিকায় রূপান্তর করতে
List<string> IDs = (TradeTypeEnum.Split(',')).Select(t => t.Trim()).ToList();