আইএনএনকিউ দিয়ে কি লিনকিউ কাজ করে?


87

আমার একটি ক্লাস রয়েছে যা প্রয়োগ করে IEnumerable, কিন্তু বাস্তবায়ন করে না IEnumerable<T>। আমি এই শ্রেণিটি পরিবর্তন করতে পারি না, এবং আমি এর পরিবর্তে অন্য শ্রেণি ব্যবহার করতে পারি না। আমি যেমন বুঝতে পেরেছি এমএসডিএন লিনকিউ ব্যবহার করা যেতে পারে যদি শ্রেণি প্রয়োগ করেIEnumerable<T> । আমি ব্যবহার করার চেষ্টা করেছি instance.ToQueryable(), তবে এটি এখনও লিনকিউ পদ্ধতিগুলিকে সক্ষম করে না। আমি নিশ্চিতভাবে জানি যে এই শ্রেণিতে কেবলমাত্র এক ধরণের উদাহরণ থাকতে পারে, সুতরাং শ্রেণিটি প্রয়োগ করতে পারে IEnumerable<T>, তবে এটি কেবল তা নয়। তাই আমি এই ক্লিনিকে লিনকিউ এক্সপ্রেশন ব্যবহার করে জিজ্ঞাসা করতে কী করতে পারি?


আইএনউনামেবল ingালাই ছাড়াই, সমস্ত লিঙ্ক পদ্ধতির পরিবর্তে আপনি কেবলমাত্র 8 টি পদ্ধতি দেখতে পাবেন: এসকিউয়েরেবল, কাস্ট <>, সমান, getEnumerator, গেটহ্যাশকোড, গেটটাইপ, অফ টাইপ <>, টোস্ট্রিং
শনফ্যাচারলি

উত্তর:


136

আপনি ব্যবহার করতে পারেন Cast<T>()বা OfType<T>একটি আইইনিউরেবলের জেনেরিক সংস্করণ পেতে পারেন যা সম্পূর্ণ লিনকিউ সমর্থন করে।

যেমন

IEnumerable objects = ...;
IEnumerable<string> strings = objects.Cast<string>();

অথবা আপনি যদি জানেন না তবে এতে কী ধরণের থাকে আপনি সর্বদা এটি করতে পারেন:

IEnumerable<object> e = objects.Cast<object>();

যদি আপনার অ-জেনেরিকটিতে IEnumerableবিভিন্ন ধরণের অবজেক্ট থাকে এবং আপনি কেবল যেমন আগ্রহী হন। আপনি যে স্ট্রিংগুলি করতে পারেন:

IEnumerable<string> strings = objects.OfType<string>();

4
প্রতিদিন আমি লিনকিউ সম্পর্কে নতুন কিছু শিখি। প্রতিদিন, আমি এটি আরও বেশি করে ভালবাসি।
জোও মেন্ডেস

11

বনভ. Cast<T>টাইপটিতে রূপান্তরিত করতে আপনাকে কেবল ফাংশনটি ব্যবহার করতে হবে IEnumerable<T>। উদাহরণ স্বরূপ:

IEnumerable e = ...;
IEnumerable<object> e2 = e.Cast<object>();

এখন e2একটি IEnumerable<T>এবং সমস্ত লিনকিউ ফাংশন নিয়ে কাজ করতে পারে।


3

আপনি লিনকিউ-এর ক্যোয়ারী অনুধাবন সিনট্যাক্সও ব্যবহার করতে পারেন, যা itemকোনও প্রকার নির্দিষ্ট করা থাকলে রেঞ্জ ভেরিয়েবলের ( যেমন এই উদাহরণস্বরূপ) টাইপ করে:

IEnumerable list = new ArrayList { "dog", "cat" };

IEnumerable<string> result =
  from string item in list
  select item;

foreach (string s in result)
{
    // InvalidCastException at runtime if element is not a string

    Console.WriteLine(s);
}

প্রভাবটি @ জেয়ার্ডপাড়ের দ্রবণের অনুরূপ; দেখতে স্পষ্ট বিন্যাস চলক প্রকার: 7.16.2.2 বিস্তারিত জানার জন্য C # এর ভাষা স্পেসিফিকেশন হবে।

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