আইকিউয়েরেবল <T> এবং আইনিউবারেবল <টি> এর মধ্যে পার্থক্য কী?


422

মধ্যে পার্থক্য কি IQueryable<T>এবং IEnumerable<T>?


এই প্রশ্নের সাথে ওভারল্যাপ করে আইকিউয়ারিযোগ্য এবং আইনিউমারেবলের মধ্যে পার্থক্য কী তাও দেখুন ।

উত্তর:


258

প্রথমত, ইন্টারফেসটি প্রসারিত করে , তাই আপনি "প্লেইন" দিয়ে যা কিছু করতে পারেন , আপনি এটি দিয়েও করতে পারেন ।IQueryable<T> IEnumerable<T>IEnumerable<T>IQueryable<T>

IEnumerable<T>কেবলমাত্র এমন একটি GetEnumerator()পদ্ধতি রয়েছে Enumerator<T>যা এর জন্য ফিরে আসে যার জন্য আপনি টি এরMoveNext() ক্রমিকের মাধ্যমে পুনরাবৃত্তি করতে তার পদ্ধতিটি কল করতে পারেন ।

কি IQueryable<T>যে হয়েছে IEnumerable<T> না বিশেষ এক দুই সম্পত্তি করে একটি পয়েন্ট ক্যোয়ারী প্রদানকারী (যেমন, এসকিউএল প্রদানকারী করার জন্য একটি LINQ) এবং একটি থেকে অন্য একটি ইশারা ক্যোয়ারী অভিব্যক্তি প্রতিনিধিত্বমূলক IQueryable<T>একটি রানটাইম-traversable বিমূর্ত সিনট্যাক্স গাছ যে হতে পারে যেমন বস্তুর প্রদত্ত ক্যোয়ারী সরবরাহকারীর দ্বারা বোঝা গেছে (বেশিরভাগ অংশে, আপনি ব্যতিক্রম ছাড়াই সত্তা সরবরাহকারীগুলিকে একটি লিনকিউতে একটি এসকিউএল এক্সপ্রেশনকে একটি লিনকিউ দিতে পারবেন না)।

অভিব্যক্তিটি কেবল অবজেক্টের নিজেই ধ্রুবক অভিব্যক্তি বা ক্যোয়ারী অপারেটর এবং অপারেশনগুলির সমন্বিত সেটগুলির আরও জটিল গাছ হতে পারে। ক্যোয়ারীর সরবরাহকারীর IQueryProvider.Execute()বা IQueryProvider.CreateQuery()পদ্ধতিগুলিকে এতে একটি এক্সপ্রেশন দিয়ে বলা হয় এবং তারপরে হয় কোয়েরির ফলাফল বা অন্য IQueryableকোনওটি যথাক্রমে ফিরে আসে।


8
AsQueryable ব্যবহার করে কোন লাভ আছে?
জর্দান

6
একমাত্র সুবিধা হ'ল সুবিধা। AsQueryable()কেবলমাত্র একটি প্রশ্নযোগ্য হিসাবে একটি গণনাযোগ্য ছাঁটাই করবে এবং যদি এটি IQueryableইন্টারফেস প্রয়োগ করে তবে তা ফিরিয়ে দেবে , অন্যথায় এটি এটি একটিতে আবৃত করে ConstantExpression, যা প্রত্যাবর্তিত EnumerableQueryঅবজেক্টে উল্লেখ করা হয় ।
মার্ক সিডেড



@JenonD লিংক মারা গেছে, এখানে waybackmachine আছে: web.archive.org/web/20160904162931/http://www.dotnet-tricks.com/...
majjam

201

প্রাথমিক পার্থক্য হ'ল লিনকিউ অপারেটররা প্রতিনিধিদের পরিবর্তে বস্তু IQueryable<T>গ্রহণ Expressionকরে, যার অর্থ কাস্টম ক্যোয়ারী যুক্তি যেমন এটি গ্রহণ করে, উদাহরণস্বরূপ, একটি প্রাকটিক বা মান নির্বাচক, কোনও পদ্ধতির প্রতিনিধি পরিবর্তে এক্সপ্রেশন ট্রি আকারে।

  • IEnumerable<T> মেমোরিতে পুনরাবৃত্তি হওয়া সিকোয়েন্সগুলির সাথে কাজ করার জন্য দুর্দান্ত but
  • IQueryable<T> দূরবর্তী ডেটা উত্স যেমন কোনও ডাটাবেস বা ওয়েব পরিষেবাদির মতো স্মৃতি ছাড়িয়ে যাওয়ার অনুমতি দেয়।

অনুসন্ধান কার্যকর করা:

  • যেখানে একটি ক্যোয়ারির সম্পাদনা "প্রক্রিয়াধীন" সম্পাদিত হতে চলেছে , সাধারণত কোয়েরির প্রতিটি অংশ কার্যকর করতে কোড (কোড হিসাবে) এর জন্য প্রয়োজনীয় সমস্ত প্রয়োজন।

  • প্রক্রিয়াজাতকরণটি প্রক্রিয়াজাতকরণের বাইরে সঞ্চালিত হবে যেখানে কোয়েরির যুক্তি তথ্য উপাত্তে উপস্থাপন করতে হবে যাতে লিনকুই সরবরাহকারী এটিকে মেমরির বহির্মুখী মৃত্যুর জন্য উপযুক্ত আকারে রূপান্তর করতে পারে - এটি এলডিএপি কোয়েরি কিনা, এসকিউএল বা যাই হোক না কেন।

আরো:

http://www.codeproject.com/KB/cs/646361/WhatHowWhere.jpg


14
আমি স্মৃতি বহির্মুখী অপারেশন উল্লেখ উল্লেখ করতে চান। এটি ব্যবহারে একটি বাস্তব ব্যবহারিক পার্থক্য স্পষ্ট করে।
ইসমাইল স্মার্নু

2
আইইনিউমারেবল <T> পদ্ধতিটি যেখানে প্যাটারামি হিসাবে প্রতিনিধি গ্রহণের পরিবর্তে আইকুয়্যারেবল <T> এক্সপ্রেশন <TDelegate> পরামিতি নেবে। আমরা আইকিউয়ারেবল <T> তে কোড পাস করছি না, আমরা লিনকিউ সরবরাহকারী বিশ্লেষণের জন্য এক্সপ্রেশন ট্রি (ডেটা হিসাবে কোড) পাস করছি। সি # 3.0 এবং
লিনকিউ

আপনার ইমেজ লিঙ্কটি নিয়ে কিছু রয়েছে, কোনও কারণে এটি পোস্ট বডিতে রেন্ডারিং হচ্ছে না কোডপ্রজেক্ট
কেবি /

@ জোয়ে তবুও, আমি এই উত্তরে সেই চিত্রটি ঠিক দেখতে পেয়েছি
ভোনসি

190

এটি ইউটিউবে একটি দুর্দান্ত ভিডিও যা দেখায় যে এই ইন্টারফেসগুলি কীভাবে আলাদা worth

নীচে এটির জন্য একটি দীর্ঘ বর্ণনামূলক উত্তর দেওয়া আছে।

মনে রাখা প্রথম গুরুত্বপূর্ণ বিষয় হ'ল IQueryableইন্টারফেস উত্তরাধিকার সূত্রে প্রাপ্ত IEnumerable, তাই যা কিছু IEnumerableকরতে পারে তা করতে IQueryableপারে।

এখানে চিত্র বর্ণনা লিখুন

অনেক পার্থক্য রয়েছে তবে আসুন আমরা একটি বড় পার্থক্য সম্পর্কে আলোচনা করি যা সবচেয়ে বড় পার্থক্য তৈরি করে। IEnumerableইন্টারফেসটি কার্যকর যখন আপনার সংগ্রহটি লোকে লোড করা হয় LINQবা সত্তা ফ্রেমওয়ার্ক এবং আপনি সংগ্রহে ফিল্টার প্রয়োগ করতে চান।

নীচের সরল কোড যা IEnumerableসত্তা ফ্রেমওয়ার্ক সহ ব্যবহার করে তা বিবেচনা করুন । কার Whereরেকর্ড পেতে এটি একটি ফিল্টার ব্যবহার EmpIdকরছে 2

EmpEntities ent = new EmpEntities();
IEnumerable<Employee> emp = ent.Employees; 
IEnumerable<Employee> temp = emp.Where(x => x.Empid == 2).ToList<Employee>();

IEnumerableকোড যেখানে ক্লায়েন্টের পাশেই ফিল্টার কার্যকর করা হয়। অন্য কথায় সমস্ত ডেটা তার স্ক্যান ক্লায়েন্ট এ ডাটাবেস থেকে সংগৃহীত হয় এবং তারপর সঙ্গে রেকর্ড পায় EmpIdহয় 2

এখানে চিত্র বর্ণনা লিখুন

কিন্তু এখন নিচের কোড আমরা পরিবর্তিত হয়েছে তা দেখতে IEnumerableকরতে IQueryable। এটি সার্ভারের পাশে একটি এসকিউএল ক্যোয়ারী তৈরি করে এবং ক্লায়েন্টের পক্ষে কেবল প্রয়োজনীয় ডেটা প্রেরণ করা হয়।

EmpEntities ent = new EmpEntities();
IQueryable<Employee> emp = ent.Employees;
IQueryable<Employee> temp =  emp.Where(x => x.Empid == 2).ToList<Employee>();

এখানে চিত্র বর্ণনা লিখুন

সুতরাং এর মধ্যে পার্থক্য IQueryableএবং IEnumerableযেখানে ফিল্টার যুক্তিবিজ্ঞান কার্যকর সম্পর্কে। একটি ক্লায়েন্টের পক্ষে কার্যকর করা হয় এবং অন্যটি ডাটাবেসে কার্যকর করে।

সুতরাং আপনি যদি কেবল ইন-মেমোরি ডেটা সংগ্রহের সাথে কাজ করে থাকেন IEnumerableতবে এটি একটি ভাল পছন্দ তবে আপনি যদি ডেটাবেসের সাথে সংযুক্ত ডেটা সংগ্রহের প্রশ্নটি করতে চান `আইকিউয়েরেবল আরও ভাল পছন্দ কারণ এটি নেটওয়ার্ক ট্র্যাফিক হ্রাস করে এবং এসকিউএল ভাষার শক্তি ব্যবহার করে।


হাই, দুর্দান্ত ব্যাখ্যার জন্য অনেক ধন্যবাদ। আমি বুঝতে পারি কেন আইকিউয়েরেবল "মেমরির বাইরে থাকা" ডেটার জন্য আরও ভাল পছন্দ তবে আমি "ইন-মেমোরি" ডেটার জন্য আইনামেরেবল কেন ভাল তা বুঝতে লড়াই করছি? আমি এখনও মনে করি ডেটা পেতে এবং ফিল্টার প্রয়োগের চেয়ে ফিল্টারযুক্ত ডেটা পাওয়া ভাল।
ইমাদ

যখন এটি "ইন-মেমোরি" হয় তখন তা আসলে কিছু যায় আসে না। ডেটা ইতিমধ্যে মেমরিতে রয়েছে, সঠিক সময়ে এটি ফিল্টার করা কোনও বিষয় নয়।
রনি এক্সেলরড

@ ইমাদ উদাহরণস্বরূপ, সত্ত্বা ডেটটাইমঅফসেটকে ডেটটাইমে রূপান্তর করে ডেটা প্রজেক্ট করা সম্ভাব্যভাবে আইকিউয়েরেবল ব্যবহার করে বা সত্তা ফাংশন সহ সম্ভব হয় না। সর্বাধিক উপায় হ'ল সত্তা অবজেক্টটি AsEnumerable () করা, তারপরে () নির্বাচন করুন) এমন একটি ভিউ মডেল যা ডেটটাইম ধারণ করে। এই প্রক্রিয়াটি ইন-মেমরি ফাংশনগুলি ব্যবহার করে।
জেফ লি

57

আইমনামেবল: মেমোরি কালেকশন (বা স্থানীয় কোয়েরি) এর সাথে কাজ করার জন্য IEnumerable সবচেয়ে উপযুক্ত। আইনিম্যারেবল আইটেমগুলির মধ্যে স্থানান্তরিত করে না, এটি কেবল সংগ্রহের জন্য এগিয়ে।

আইকিউয়েরেবল: ডেটাবেস বা ওয়েব পরিষেবা (বা রিমোট কোয়েরি) এর মতো রিমোট ডেটা উত্সের জন্য আইকুয়েরেবল সেরা স্যুট। আইকিউয়েরেবল হ'ল একটি শক্তিশালী বৈশিষ্ট্য যা বিভিন্ন ধরণের মুলতুবি বাস্তবায়নের পরিস্থিতি সক্ষম করে (যেমন পেজিং এবং রচনার উপর ভিত্তি করে অনুসন্ধানগুলি)।

সুতরাং যখন আপনাকে কেবল ইন-মেমরি সংগ্রহের মাধ্যমে পুনরাবৃত্তি করতে হবে তখন আইইনুমারেবল ব্যবহার করুন, যদি আপনাকে ডেটাসেট এবং অন্যান্য ডেটা উত্সগুলির মতো সংগ্রহের সাথে কোনও হেরফের করতে হয়, তবে আইকুয়েরেবল ব্যবহার করুন


3
IEnumerable স্থগিত মৃত্যুদন্ড ব্যবহার করে না?
ইয়ান ওয়ারবার্টন

3
স্থগিত সম্পাদন আইইনিউমারেবল এবং আইকুয়েরেবল উভয় ক্ষেত্রেই উপলব্ধ। আরও আকর্ষণীয় তথ্য এখানে পাওয়া যাবে: stackoverflow.com/questions/2876616/…
Ignacio Hagopian

18

সাধারণ কথায় অন্য বড় পার্থক্য হ'ল সার্ভার সাইডে আইনিউমেন্টেবল সিলেক্ট কোয়েরি এক্সিকিউট করে, ক্লায়েন্ট সাইডে মেমরি লোড করুন এবং তারপরে ডাটা ফিল্টার করুন যখন আইকুয়ে্যারেবল সমস্ত ফিল্টার সহ সার্ভার সাইডে সিলেক্ট কোয়েরি এক্সিকিউট করুন।


17

বাস্তব জীবনে আপনি যদি লিংক-টু-এসকিউএল এর মতো কোনও ORM ব্যবহার করে থাকেন

  • আপনি যদি আইকিউয়েরেবল তৈরি করেন তবে কোয়েরিটি এসকিএলে রূপান্তরিত হতে পারে এবং ডাটাবেস সার্ভারে চলে run
  • আপনি যদি একটি প্রাথমিক সংখ্যা তৈরি করেন, তবে ক্যোরি চালানোর আগে সমস্ত সারিগুলি বস্তু হিসাবে মেমরিতে টানা হবে।

উভয় ক্ষেত্রেই যদি আপনি কোনও কল না করেন ToList()বা ToArray()ততক্ষণে এটি ব্যবহারের সময় ক্যোয়ারি কার্যকর করা হবে, সুতরাং, বলুন, আপনার কাছে একটি রয়েছে IQueryable<T>এবং আপনি এটি থেকে 4 টি তালিকা বাক্স পূরণ করেন, তাহলে ক্যোয়ারীটি 4 বার ডাটাবেসের বিরুদ্ধে চালানো হবে।

এছাড়াও যদি আপনি আপনার প্রশ্নের সীমাবদ্ধ করে থাকেন:

q.Where(x.name = "a").ToList()

তারপরে একটি আইকিউয়েরেবলের সাথে উত্পাদিত এসকিউএল এর সাথে "যেখানে নাম =" এ "থাকবে তবে একটি আইনেউমারেবলের সাহায্যে আরও অনেকগুলি ভূমিকা ডাটাবেস থেকে ফিরে যাবে, তারপরে x.name =" a "চেকটি নেট দ্বারা সম্পন্ন হবে।


10

আইনাম্যারেবল একটি সংগ্রহকে উল্লেখ করছেন তবে আইকিউয়েরেবল কেবল একটি ক্যোয়ারী এবং এটি একটি এক্সপ্রেশন ট্রি এর মধ্যে তৈরি হবে।


8

নীচে উল্লিখিত ছোট্ট পরীক্ষা আপনাকে IQueryable<T>এবং এর মধ্যে পার্থক্যের একটি দিক বুঝতে সহায়তা করে IEnumerable<T>। আমি এই পোস্টটি থেকে এই উত্তরটি পুনরুত্পাদন করেছি যেখানে আমি অন্য কারও পোস্টে সংশোধন যোগ করার চেষ্টা করছিলাম

আমি ডিবিতে (ডিডিএল স্ক্রিপ্ট) নিম্নলিখিত কাঠামো তৈরি করেছি:

CREATE TABLE [dbo].[Employee]([PersonId] [int] NOT NULL PRIMARY KEY,[Salary] [int] NOT NULL)

এখানে রেকর্ড সন্নিবেশ লিপি (ডিএমএল স্ক্রিপ্ট):

INSERT INTO [EfTest].[dbo].[Employee] ([PersonId],[Salary])VALUES(1, 20)
INSERT INTO [EfTest].[dbo].[Employee] ([PersonId],[Salary])VALUES(2, 30)
INSERT INTO [EfTest].[dbo].[Employee] ([PersonId],[Salary])VALUES(3, 40)
INSERT INTO [EfTest].[dbo].[Employee] ([PersonId],[Salary])VALUES(4, 50)
INSERT INTO [EfTest].[dbo].[Employee] ([PersonId],[Salary])VALUES(5, 60)
GO

এখন, আমার লক্ষ্যটি ছিল Employeeডাটাবেসে টেবিল থেকে কেবল শীর্ষ 2 রেকর্ড প্রাপ্ত । আমি আমার কনসোল অ্যাপ্লিকেশনটিতে একটি ADO.NET সত্তা ডেটা মডেল আইটেমটি Employeeআমার ডেটাবেজে টেবিলের দিকে ইঙ্গিত করে লিনকিউ কোয়েরি লিখতে শুরু করি।

আইকিউয়েরেবল রুটের জন্য কোড :

using (var efContext = new EfTestEntities())
{
    IQueryable<int> employees = from e in efContext.Employees  select e.Salary;
    employees = employees.Take(2);

    foreach (var item in employees)
    {
        Console.WriteLine(item);
    }
}

আমি যখন এই প্রোগ্রামটি চালাতে শুরু করেছি তখন আমি আমার এসকিউএল সার্ভারের উদাহরণে এসকিউএল ক্যোয়ারী প্রোফাইলারের একটি অধিবেশনও শুরু করেছিলাম এবং এখানে মৃত্যুদন্ড কার্যকর করার সংক্ষিপ্তসারটি দেওয়া হয়:

  1. বরখাস্ত করা মোট প্রশ্নের সংখ্যা: 1
  2. প্রশ্নের পাঠ্য: SELECT TOP (2) [c].[Salary] AS [Salary] FROM [dbo].[Employee] AS [c]

এটি কেবলমাত্র ডাটাবেস সার্ভারের পক্ষেই ক্লজটি IQueryableপ্রয়োগ করার জন্য যথেষ্ট স্মার্ট Top (2)তাই এটি তারের মধ্যে 5 টির মধ্যে 2 টি রেকর্ড নিয়ে আসে। আর কোনও মেমোরি ফিল্টারিং ক্লায়েন্ট কম্পিউটারের পক্ষে প্রয়োজন হয় না।

আইনুনামেবল রুটের কোড :

using (var efContext = new EfTestEntities())
{
    IEnumerable<int> employees = from e in efContext.Employees  select e.Salary;
    employees = employees.Take(2);

    foreach (var item in employees)
    {
        Console.WriteLine(item);
    }
}

এক্ষেত্রে মৃত্যুদন্ড কার্যকর করার সংক্ষিপ্তসার:

  1. বরখাস্ত করা মোট প্রশ্নের সংখ্যা: 1
  2. এসকিউএল প্রোফাইলারে ক্যোয়ারী পাঠানো প্রশ্ন: SELECT [Extent1].[Salary] AS [Salary] FROM [dbo].[Employee] AS [Extent1]

এখন জিনিসটি টেবিলে IEnumerableউপস্থিত সমস্ত 5 টি রেকর্ড আনা হয় Salaryএবং তারপরে শীর্ষ 2 রেকর্ড পাওয়ার জন্য ক্লায়েন্ট কম্পিউটারে একটি মেমরি ফিল্টার করে। সুতরাং আরও ডেটা (এই ক্ষেত্রে 3 টি অতিরিক্ত রেকর্ড) অকারণে তারের উপর স্থানান্তরিত হয়েছে।


7

আমি এই জাতীয় পোস্টটিতে যা লিখেছি তা এখানে (এই বিষয়টিতে)। (এবং না, আমি সাধারণত নিজেকে উদ্ধৃত করি না, তবে এগুলি খুব ভাল নিবন্ধ))

"এই নিবন্ধটি সহায়ক: আইকিউয়েরেবল বনাম আইএনকিউরেবল লিংক-টু-এসকিউএল-এ

এই নিবন্ধটি উদ্ধৃত করে, 'এমএসডিএন ডকুমেন্টেশন অনুসারে আইকুয়েরেবলের উপর কলগুলি তার পরিবর্তে অভ্যন্তরীণ অভিব্যক্তি গাছ তৈরি করে পরিচালনা করে। "এই পদ্ধতিগুলি যা আইকিউয়েরেবল (টি অফ) প্রসারিত করে সরাসরি কোনও অনুসন্ধান করে না Instead পরিবর্তে, তাদের কার্যকারিতা হ'ল এক্সপ্রেশন অবজেক্ট তৈরি করা, যা একটি এক্সপ্রেশন ট্রি যা সংশ্লেষিত ক্যোয়ারিকে উপস্থাপন করে।"

সি # এবং। নেট প্ল্যাটফর্মে এক্সপ্রেশন গাছগুলি একটি অত্যন্ত গুরুত্বপূর্ণ নির্মাণ। (এগুলি সাধারণভাবে গুরুত্বপূর্ণ, তবে সি # তাদেরকে খুব দরকারী করে তোলে)) পার্থক্যটি আরও ভালভাবে বুঝতে, আমি এখানে অফিসিয়াল সি # 5.0 স্পেসিফিকেশনে অভিব্যক্তি এবং বিবৃতিগুলির মধ্যে পার্থক্য সম্পর্কে পড়ার পরামর্শ দিই লম্বা ক্যালকুলাসে উন্নত তাত্ত্বিক ধারণাগুলির জন্য, এক্সপ্রেশনগুলি প্রথম শ্রেণীর অবজেক্ট হিসাবে পদ্ধতিগুলির জন্য সমর্থন সক্ষম করে। আইকিউয়েরেবল এবং আইনিউমারেবলের মধ্যে পার্থক্য এই পয়েন্টকে কেন্দ্র করে। আইকিউয়েরেবল এক্সপ্রেশন ট্রি তৈরি করে যেখানে আইনিউবারেবল কমপক্ষে আমাদের মধ্যে যারা মাইক্রোসফ্টের গোপন ল্যাবগুলিতে কাজ করেন না তাদের জন্য সাধারণ শর্তে নয়।

এখানে অন্য একটি খুব দরকারী নিবন্ধ যা পুশ বনাম টান দৃষ্টিকোণ থেকে পার্থক্যগুলি বর্ণনা করে। ("পুশ" বনাম "টান দিয়ে," আমি তথ্য প্রবাহের দিক নির্দেশ করছি।। নেট এবং সি # এর জন্য প্রতিক্রিয়াশীল প্রোগ্রামিং প্রযুক্তি

এখানে একটি খুব ভাল নিবন্ধ যা বিবৃতি ল্যাম্বডাস এবং এক্সপ্রেশন ল্যাম্বডাসের মধ্যে পার্থক্যের বিবরণ দেয় এবং আরও গভীরতার সাথে অভিব্যক্তি ট্রেসের ধারণাগুলি নিয়ে আলোচনা করে: সি # প্রতিনিধি, এক্সপ্রেশন ট্রি এবং ল্যাম্বদা স্টেটমেন্ট বনাম ল্যাম্বদা এক্সপ্রেশনগুলিতে পুনর্বিবেচনা করছেন। । "


6

আমরা ডেটাবেস থেকে পুনরুদ্ধার করা ডেটা ব্যবহার করি IEnumerableএবং IQueryableপরিচালনা করি। IQueryableউত্তরাধিকার সূত্রে প্রাপ্ত IEnumerable, তাই IQueryableসমস্ত IEnumerableবৈশিষ্ট্য ধারণ করে । মধ্যে প্রধান পার্থক্য IQueryableএবং IEnumerableযে IQueryableফিল্টার সঙ্গে, executes ক্যোয়ারী যেহেতু IEnumerable, executes ক্যোয়ারী প্রথম এবং তারপর এটি অবস্থার উপর ভিত্তি করে ডেটা ফিল্টার করে।

নীচে আরও বিস্তারিত পার্থক্য খুঁজে:

IEnumerable

  1. IEnumerableSystem.Collectionsনেমস্পেসে বিদ্যমান
  2. IEnumerable সার্ভার সাইডে একটি নির্বাচিত ক্যোয়ারী চালাও, ক্লায়েন্ট-সাইডে মেমরি ইন ডেটা লোড করুন এবং তারপরে ডেটা ফিল্টার করুন
  3. IEnumerable তালিকা, অ্যারের মতো মেমরির সংগ্রহ থেকে ডেটা অনুসন্ধানের জন্য উপযুক্ত
  4. IEnumerable লিনকু টু অবজেক্ট এবং লিনকু থেকে এক্সএমএল ক্যোয়ারীগুলির পক্ষে উপকারী

IQueryable

  1. IQueryableSystem.Linqনেমস্পেসে বিদ্যমান
  2. IQueryable সমস্ত ফিল্টার সহ সার্ভার-সাইডে একটি 'নির্বাচন করুন ক্যোয়ারী' চালায়
  3. IQueryable আউট-মেমোরি (যেমন রিমোট ডাটাবেস, পরিষেবা) সংগ্রহ থেকে ডেটা অনুসন্ধানের জন্য উপযুক্ত
  4. IQueryable লিনকু থেকে এসকিউএল অনুসন্ধানগুলির জন্য উপকারী

সুতরাং IEnumerableসাধারণত ইন-মেমোরি সংগ্রহে ডিল করার জন্য ব্যবহৃত হয়, অন্যদিকে IQueryableসংগ্রহগুলি পরিচালনা করতে সাধারণত ব্যবহৃত হয়।


3

আইইনুমেবল এবং আইকিউয়ারিযোগ্য উভয়ই কোনও ডেটা সংগ্রহ এবং ডেটা ম্যানিপুলেশন অপারেশন সম্পাদনের জন্য উদাহরণস্বরূপ ডেটা সংগ্রহের ক্ষেত্রে ফিল্টারিংয়ের জন্য ব্যবহৃত হয়। এখানে আপনি উদাহরণের সাথে সেরা পার্থক্য তুলনা খুঁজে পেতে পারেন। http://www.gurujipoint.com/2017/05/difference-between-ienumerable-and.html এখানে চিত্র বর্ণনা লিখুন


2

আইকিউয়েরেবল আইনিম্যারেবলের চেয়ে দ্রুত হয় যদি আমরা ডাটাবেস থেকে বিপুল পরিমাণে ডেটা নিয়ে কাজ করি কারণ, আইকিউয়েরেবল কেবলমাত্র ডাটাবেস থেকে প্রয়োজনীয় ডেটা পায় যেখানে আইইনামেবল ডেটাবেস থেকে প্রয়োজনীয়তা নির্বিশেষে সমস্ত ডেটা পেয়ে যায়


0

অপরিবর্তনীয়: যখন আমরা ইনপ্রসেস মেমরি নিয়ে ডিল করতে চাই, অর্থাত্‍ ডেটা সংযোগ ব্যতীত: যখন এসকিউএল সার্ভারের সাথে ডিল করতে হয়, অর্থাত্ ডেটা সংযোগ আইলিস্ট সহ: অপারেশন যেমন অ্যাড অবজেক্ট, ডিলিট অবজেক্ট ইত্যাদি etc

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