আমার একটি আছে List<String>
এবং এই তালিকা থেকে আমার একটি সাবলিস্ট নেওয়া দরকার। .NET 3.5 এ জন্য তালিকার কোন পদ্ধতি উপলব্ধ?
আমার একটি আছে List<String>
এবং এই তালিকা থেকে আমার একটি সাবলিস্ট নেওয়া দরকার। .NET 3.5 এ জন্য তালিকার কোন পদ্ধতি উপলব্ধ?
উত্তর:
আপনি তালিকাটি চান: getRange (ফার্স্ট ইনডেক্স, গণনা)। Http://msdn.microsoft.com/en-us/library/21k0e39c.aspx দেখুন
// I have a List called list
List sublist = list.GetRange(5, 5); // (gets elements 5,6,7,8,9)
List anotherSublist = list.GetRange(0, 4); // gets elements 0,1,2,3)
আপনি কি এই পরে আছেন?
আপনি যদি মূল তালিকা থেকে সাবলিস্ট আইটেমগুলি মুছতে চাইছেন তবে আপনি তা করতে পারেন:
// list is our original list
// sublist is our (newly created) sublist built from GetRange()
foreach (Type t in sublist)
{
list.Remove(t);
}
আপনার তালিকায় একটি লিনকিউ ক্যোয়ারী চালানো যেমন সহজ হবে?
List<string> mylist = new List<string>{ "hello","world","foo","bar"};
List<string> listContainingLetterO = mylist.Where(x=>x.Contains("o")).ToList();
subList
জাভা থেকেও অনুরূপ কিছু খুঁজছিলাম যা মূল তালিকার মধ্যে একটি পরিবর্তনীয় দৃষ্টিভঙ্গি প্রকাশ করে। এটি ভিন্নভাবে আচরণ করে, যা অবিলম্বে সুস্পষ্ট নাও হতে পারে, তাই আমি ভেবেছিলাম যে এটি পরে দেখবে তার উপকারের জন্য এটি উল্লেখ করা সহায়ক হবে। বিষয়বস্তু, আপনি যোগ বা ধ্যান বা কিছু গ্রহণ করতে চাইতে পারেন; আপনি কোনও প্ররোচনা ছাড়াই রেড-ইন-দ্য-মুখের উন্মাদ হয়ে গেছেন।
লিনকিউ থেকে হিয়ার ক্লজটি ব্যবহার করুন:
List<object> x = new List<object>();
x.Add("A");
x.Add("B");
x.Add("C");
x.Add("D");
x.Add("B");
var z = x.Where(p => p == "A");
z = x.Where(p => p == "B");
উপরের বিবৃতিতে "পি" হ'ল তালিকায় থাকা অবজেক্টটি। সুতরাং আপনি যদি কোনও ডেটা অবজেক্ট ব্যবহার করেন, যেমন:
public class Client
{
public string Name { get; set; }
}
তাহলে আপনার লিঙ্কটি দেখতে এই রকম হবে:
List<Client> x = new List<Client>();
x.Add(new Client() { Name = "A" });
x.Add(new Client() { Name = "B" });
x.Add(new Client() { Name = "C" });
x.Add(new Client() { Name = "D" });
x.Add(new Client() { Name = "B" });
var z = x.Where(p => p.Name == "A");
z = x.Where(p => p.Name == "B");
লিনকিউ সহ:
List<string> l = new List<string> { "1", "2", "3" ,"4","5"};
List<string> l2 = l.Skip(1).Take(2).ToList();
আপনার যদি ভবিষ্যদ্বাণী প্রয়োজন, তবে টোললিস্টের প্রয়োজন নেই:
foreach (string s in l.Skip(1).Take(2)){}
লিনকিউয়ের সুবিধা হ'ল আপনি যদি কিছু শীর্ষস্থানীয় উপাদান এড়িয়ে যেতে চান তবে আপনি করতে পারেন:
List<string> l2 = l.Skip(1).ToList();
foreach (string s in l.Skip(1)){}
অর্থাত গণনা / দৈর্ঘ্য ইত্যাদির যত্ন নেওয়ার দরকার নেই
আপনার সংগ্রহ শ্রেণিতে এমন একটি পদ্ধতি থাকতে পারে যা ফিল্টার সংজ্ঞায়িত করার জন্য পাস করা মানদণ্ডের উপর ভিত্তি করে সংগ্রহ (একটি উপ তালিকা) প্রদান করে। ফরচ লুপের সাহায্যে একটি নতুন সংগ্রহ তৈরি করুন এবং এটি পাস করুন।
অথবা, পদ্ধতিটি এবং লুপটিতে একটি "ফিল্টারড" বা "সক্রিয়" পতাকা (সম্পত্তি) সেট করে বিদ্যমান সংগ্রহটি সংশোধন করুন। এইটি কাজ করতে পারে তবে বহুবিবাহিত কোডে সমস্যা হতে পারে। অন্যান্য বিষয়বস্তু সংগ্রহের বিষয়বস্তুর উপর নির্ভর করে যদি আপনি ডেটা কীভাবে ব্যবহার করেন তার উপর নির্ভর করে এটি হয় ভাল বা খারাপ।
উপ-তালিকায় আইটেমগুলি বিপরীত করুন
int[] l = {0, 1, 2, 3, 4, 5, 6};
var res = new List<int>();
res.AddRange(l.Where((n, i) => i < 2));
res.AddRange(l.Where((n, i) => i >= 2 && i <= 4).Reverse());
res.AddRange(l.Where((n, i) => i > 4));
0,1,4,3,2,5,6 দেয়
Range
পূর্ণসংখ্যার ডেটাটাইপ সহ সত্য। যদি আপনার ডেটাটাইপটি হয় DataTime
এবং আপনাকে দুটি নির্দিষ্ট তারিখের মধ্যে রেকর্ডের একটি তালিকা পুনরুদ্ধার করতে হবে?