LINQ। NET 2.0 রানটাইম

একটি LINQ সক্ষম একটি মেশিনে চালানো অ্যাপ্লিকেশন যে শুধুমাত্র .NET 2.0 রানটাইম ইনস্টল করতে পারেন?

তত্ত্বগতভাবে, LINQ সিনট্যাক্টিক চিনি ছাড়া আর কিছুই হয় না এবং এর ফলে আইএল কোডটি একই রকম হওয়া উচিত যেমনটি .net 2.0 তে।

কিভাবে আমি .NET 3.5 লাইব্রেরি ব্যবহার না করে LINQ লিখতে পারি? এটি কি নেট 2.0 চালাবে?

0

9 উত্তর

কিছু "হ্যাক" রয়েছে যা 3.5 ফ্রেমওয়ার্ক থেকে System.Core.dll ব্যবহার করে এটিটি .net 2.0 দিয়ে চালনা করে, কিন্তু ব্যক্তিগতভাবে আমি এই ধরনের কিছুটা ফাঁকা ভিত্তি ব্যবহার করতে চাই না।

See here: LINQ support on .NET 2.0

  1. Create a new console application
  2. Keep only System and System.Core as referenced assemblies
  3. Set Copy Local to true for System.Core, because it does not exist in .NET 2.0
  4. Use a LINQ query in the Main method. For example the one below.
  5. Build
  6. Copy all the bin output to a machine where only .NET 2.0 is installed
  7. Run

(.net 2.0 SP1 প্রয়োজন এবং System.Core.dll bundling EULA লঙ্ঘন হলে আমি কোন ধারণা আছে)

0
যোগ
@JonasT যদি আপনি .net 4.0 এ থাকেন তবে এটি LINQ ব্যবহার করে এটি .net 2.0 এর সময় থেকে আপনার কাছে প্রযোজ্য হয় না। আপনার সেটআপ সম্পর্কে বিস্তারিত বিবরণ দেয়, একটি পৃথক প্রশ্ন জিজ্ঞাসা করতে বিনা দ্বিধায়।
যোগ লেখক Michael Stum, উৎস
লাইসেন্স এবং পেটেন্ট সাধারণ জ্ঞান লঙ্ঘন। কোনও ধারণা নেই যে মাইক্রোসফ্টে উৎপত্তি হয়েছিল। তাদের সব আগের উদ্ভাবনের কাঁধে নির্মিত হয়। সবকিছুই প্রত্যেকের জন্যে এবং আমি আশা করি একদিন এটি সুস্পষ্ট হয়ে উঠবে। চিন্তার মধ্যে Shift একটি আবশ্যক, অন্যথায় আমরা মানবতা হিসাবে এটি করা যাবে না।
যোগ লেখক Mariusz, উৎস
আমি তৈরি এবং রান করার পরে, ডিবাগ ফোল্ডার ব্যতীত বিন ফোল্ডারে কিছুই নেই। :( আমি নেট 4.0 ভিজ্যুয়াল স্টুডিও 2010 এ কনসোল অ্যাপ্লিকেশন তৈরি করছি।
যোগ লেখক Jonas T, উৎস
ধন্যবাদ মাইকেল আমি যে সব খুঁজছেন হয় আউটপুট ফাইল আমি .net 2.0 ব্যবহার করছি। সমস্যাটি হল আমি ভিসুয়াল স্টুডিও 2010 ব্যবহার করছি যা বিন ফোল্ডারে কোনও আউটপুট উত্পন্ন করে না। যাই হোক না কেন আমি ঐ আউটপুটগুলি ডাউনলোড করতে পারি?
যোগ লেখক Jonas T, উৎস
redistributing system.Core.dll হল মাইক্রোসফটের লাইসেন্সের লঙ্ঘন
যোগ লেখক Lucas, উৎস

না, কারণ যখন আপনি মনে করেন যে LINQ প্রকৃতপক্ষে শুধু সিনট্যাক্টিক চিনি, এটি প্রকৃতপক্ষে ব্যাপকভাবে এক্সপ্রেশন ট্রি ব্যবহার করে - একটি বৈশিষ্ট্য। NET 2.0 এ অনুপস্থিত।

এটি বলা হচ্ছে। .NET 3.5 শুধুমাত্র .NET 2.0 শীর্ষে তৈরি করে, এবং এর কারণ হল আইএল "আলাদা" বা "বিশেষ" দেখায় না।

আমি শুধু আপনি .NET 3.5 ফ্রেমওয়ার্ক ইনস্টল করা উচিত নয় কেন একটি কারণ দেখতে না। সবকিছু। নেট 2.0 এটি জরিমানা কাজ করবে, প্রতিশ্রুতি :)

0
যোগ
প্লাস, "কর্পোরেট" জগতে, আমরা আক্ষরিকভাবে এমন মেশিন আছে যা "আপগ্রেড" করা হয়নি .NET 2.0 তে। হ্যাঁ। সত্যি, আমরা করি।
যোগ লেখক cbmeeks, উৎস
উইন্ডোজ এক্সপি SP3 এর জন্য .NET 3.0 বা উচ্চতর ইনস্টল করতে এবং উইন্ডোজ এক্সপি এম্বেড করা কিছু ডিভাইস আপডেট করার জন্য এত সহজ নয়।
যোগ লেখক Okuma.Scott, উৎস
নোট: এক্সিকিউশনের গাছ IQueryable দ্বারা ব্যবহার করা হয় (হিসাবে LINQ থেকে এসকিউএল হিসাবে), কিন্তু IEnumerbale দ্বারা না (হিসাবে LINQ যাও অবজেক্ট)
যোগ লেখক Lucas, উৎস
.Net 3.0 বা উচ্চতর উইন্ডোজ 2000 এ ইনস্টল করা হবে না।
যোগ লেখক Lamar, উৎস

যতদূর জানি আমি LINQ লাইব্রেরি শুধুমাত্র কাঠামো 3.0 থেকে পাওয়া যায়। যদি আপনি ফ্রেমওয়ার্ক ২.0 এর মত কিছু ব্যবহার করতে চান, তাহলে আপনাকে এটি পুনরায় লিখতে হবে :) অথবা একই তৃতীয় পক্ষের লাইব্রেরি খুঁজে পেতে হবে। আমি শুধুমাত্র একটি তথ্য পাওয়া এখানে কিন্তু এটি আমাকে বিশ্বাস করতে পারে না

0
যোগ
কাঠামো 3.5, আসলে, 3.0 না
যোগ লেখক Lucas, উৎস

আপনি লিনাক্স থেকে লিনাক্স সোর্স (লিনাক্সের জন্য .NET) ব্যবহার করতে পারেন।

IEnumerable : yes 
IQueryable  : yes
LINQ to xml : has been working in the trunk, but due to further additions, the trunk doesn't compile anymore

Someone has done it here:
LINQ for .NET 2.0

0
যোগ

আপনি .net 2.0 এর জন্য linqbridge ব্যবহার করতে পারেন

0
যোগ

এটা অদ্ভুত যে কোনও একটি LINQBridge এর উল্লেখ করেছে। এই সামান্য ভয়ঙ্কর প্রকল্পটি LINQ এর ব্যাকপোর্ট (IEnumerable, কিন্তু IQueryable ছাড়া) এবং তার নির্ভরতাগুলি (Func, Action, ইত্যাদি) .NET 2.0। এবং:

যদি আপনার প্রকল্প লিংকব্রীজ উল্লেখ করে   সংকলন সময়, তারপর এটি বাঁধাই হবে   LINQBridge এর ক্যোয়ারী অপারেটরদের কাছে; যদি এটা   রেফারেন্স সিস্টেম   সংকলন, তারপর এটি বাঁধাই হবে   ফ্রেমওয়ার্ক 3.5 এর ক্যোয়ারী অপারেটর।

0
যোগ
যদি এটি IQueryable সমর্থন করে না (এটি না করে), তাহলে বিন্দু কী? ? ?
যোগ লেখক Stefan Steiger, উৎস
এটি খারাপ যে LINQBridge Linq-2-Xml সমর্থন করে না: (Linq-2-Xml xml সহজ এবং সুন্দর সঙ্গে কাজ করে তোলে
যোগ লেখক Dmitry Lobanov, উৎস
LinqBridge- এর একটি অসুবিধা এটি হল যে সিস্টেমের রেফারেন্সের প্রয়োজন হিসাবে LinqBrige ব্যবহার করার সময় এটির সম্পূর্ণ ক্ষমতাতে কিছু ভাল উপহাস কাঠামো (যেমন RhinoMocks বা Moq) ব্যবহার করা অসম্ভব। কোরের। RhinoMocks ব্যবহারযোগ্য কিন্তু এটির সেরা অংশ অনুপলব্ধ কারণ আপনি সিস্টেমকে রেফারেন্স করতে পারবেন না। কোরে এবং LinqBridge এক সময়ে।
যোগ লেখক Dmitry Lobanov, উৎস
আমি ঠিক এই লেখক দ্বারা BackLinq raboof.com/projects/backlinq জুড়ে এসেছি! কেউ কি পার্থক্য জানেন বা সর্বশেষ কি?
যোগ লেখক ala, উৎস
@লা: code.google.com/p/backlinq দেখুন: "BacklinQ উত্সগুলি হয়েছে লিনাক্স ব্রিজ প্রকল্পে রুপান্তরিত এবং রক্ষণাবেক্ষণ এবং তার পরিচয় অনুযায়ী রক্ষণাবেক্ষণ করা হয়। ফলস্বরূপ, এই প্রকল্পের সাইটটি অবসরপ্রাপ্ত হয়েছে এবং সংরক্ষণাগারের উদ্দেশ্যে এখানে চলে এসেছে। অনুগ্রহ করে আরও আপডেট, অবদান এবং সমস্যাগুলির প্রতিবেদন করার জন্য LINQBridge অনুসরণ করুন। "
যোগ লেখক Mauricio Scheffer, উৎস
@ ফোরাম: Func, Action এবং "LINQ to Objects" নিজেই খুব দরকারী। ব্যক্তিগতভাবে আমি তাদের ব্যবহার করছি অনেক ইক্যুইটিবলের চেয়ে বেশি।
যোগ লেখক Mauricio Scheffer, উৎস
@ ডিমিট্রি লবানোভ: প্রকৃত সমস্যাটি প্রয়োজন সেই লাইব্রেরিগুলি।
যোগ লেখক Mauricio Scheffer, উৎস
@ ডামিট্রি লিনক 2 এক্সিল হল কিভাবে আমি কাজগুলি এত দ্রুত সম্পন্ন করেছি। Xpath এখনও একটি ভাল বিকল্প কিন্তু প্রভাশালী হিসাবে না।
যোগ লেখক Jeremy, উৎস
+1 আমি এটি একটি অনেক ব্যবহার। দ্রষ্টব্য: এটি লিংক টু অবজেক্টস (IEnumerable extensions) এর একটি বাস্তবায়ন, VS2008 (সি # 3.0) টার্গেটিং ফ্রেমওয়ার্ক 2.0+ ব্যবহার করে পুরোপুরি কাজ করে। এটি LINQ থেকে এসকিউএল বা অন্য LINQ প্রদানকারীগুলির একটি বাস্তবায়ন নয়।
যোগ লেখক Lucas, উৎস

আমি C# সম্পর্কে নিশ্চিত নই

আমি জানি, তবে আপনি VB LINNQ কোডটি 3.5 টি লাইব্রেরিতে লিখতে পারেন যতক্ষণ আপনি 2.0 ফ্রেমওয়ার্ক লক্ষ্য করার জন্য ভিএস 2008 কম্পাইলার ব্যবহার করেন।

তবে, আপনার নিজের কিছু কিছু LINQ পদ্ধতি বাস্তবায়ন করতে হবে।

LINQ এক্সিকিউটেবল কোডে প্রশ্নগুলির অনুবাদ করার জন্য একটি সিন্টেটিজ ট্রান্সফর্ম ব্যবহার করে। মূলত, এটি এই ধরনের কোড গ্রহণ করবে:

dim q = from x in xs where x > 2 select x*4;

এবং এই মত কোড এটি রূপান্তর:

dim q = xs.where(function(x) x > 2).select(function(x) x * 4);

3.5 কাঠামোর সাথে বহন করে যে LINQ কার্যকারিতা জন্য, ঐগুলিগুলি IEnumerable বা IQueryable (এমনকি তথ্য সেটগুলিতে কাজ করে এমন একটি গুচ্ছও রয়েছে) এ এক্সটেনশন পদ্ধতি হিসাবে প্রয়োগ করা হয়।

ডিফল্ট IEnumerable এক্সটেনশন পদ্ধতি System.Linq.Enumerable এ সংজ্ঞায়িত করা হয় এবং এই মত চেহারা:


public function Select(of T, R)(source as IEnumerable(of T), transform as Func(of T, R)) as IEnumerable(of R)

   'do the transformation...

end function

ইক্যুইলেটযোগ্য এক্সটেনশন পদ্ধতি এক্সপ্লোরার এক্সপ্রেশনকে লেমবাডাসের পরিবর্তে আর্গুমেন্ট হিসাবে দেখায়। তারা এই মত চেহারা:

 
 public function Select(of T, R)(source as IQueryable, transform as Expression(of Func(of T, R))
     'build a composite IQueryable that contains the expression tree for the transformation
 end function

এক্সপ্রেশন ট্রি সংস্করণগুলি আপনাকে ক্লোজগুলি প্রদত্ত এক্সপ্রেশনগুলির একটি বৃক্ষ উপস্থাপনা পেতে সহায়তা করে, যা পরে SQL কোড তৈরি করতে ব্যবহার করা যেতে পারে (অথবা আপনি যা চান তা কি)।

আপনি হয়তো আপনার নিজস্ব LINQ সংস্করণটি প্রায় এক বা একাধিক অবজেক্টের মধ্যে তৈরি করতে পারেন। এটা সব চমত্কার সোজা এগিয়ে।

আপনি যদি DLINQ ব্যবহার করতে চান, তাহলে কিছুটা আরো কঠিন হবে।

0
যোগ
তবে আপনি যদি আপনার পছন্দ মত আপনার নিজের এক্সপ্রেশন ট্রি বাস্তবায়ন লিখতে পারেন।
যোগ লেখক Scott Wisniewski, উৎস
.. এবং হ্যাঁ, আপনি VB 9.0 সম্পর্কে বলেন সবকিছু C# 3.0 (নতুন কম্পাইলার ব্যবহার করে কিন্তু পুরোনো Fx সংস্করণ লক্ষ্য) প্রয়োগ করা হয়
যোগ লেখক Lucas, উৎস
+1, তবে মনে রাখবেন অভিব্যক্তি গাছ (IQueryable জন্য) শুধুমাত্র 3.5+ এ উপলব্ধ
যোগ লেখক Lucas, উৎস

নীতিতে হ্যাঁ, আপনি যদি LINQ নির্দিষ্ট সমাবেশগুলি বিতরণ এবং কোন নির্ভরশীলতা প্রদান। তবে এটি মাইক্রোসফটের লাইসেন্সিং লঙ্ঘন। স্কট হ্যান্সেলম্যান একটি ব্লগ পোস্ট লিখেছেন যেটি ASP.NET MVC এ ASP.NET 2.0 এর উপর স্থাপন করা হচ্ছে আপনি কি করতে চাইছেন অনুরূপ।

0
যোগ

সংক্ষিপ্ত উত্তর:

  • LINQ to Objects: yes (IEnumerable)
  • LINQ to SQL/Entities: no (IQueryable)
  • LINQ to XML/DataSets: not yet?

এই প্রশ্নটি দেখুন .Net 3.5 এর বৈশিষ্ট্য সম্পর্কে স্বয়ংক্রিয়ভাবে উপলব্ধ বা সামান্য প্রচেষ্টা যখন VS2008 থেকে নেট 2.0 টার্গেটিং।

মূলত, যেকোনো জিনিস যা শুধুমাত্র "সিনট্যাক্স চিনি" এবং নতুন কম্পাইলার (C # 3.0, VB 9.0) 2.0-সামঞ্জস্যপূর্ণ আইএল হিসাবে কাজ করবে। এটি LINQ দ্বারা ব্যবহৃত অনেক বৈশিষ্ট্য যেমন বেনামী ক্লাস, বোম্বে প্রতিনিধি, স্বয়ংক্রিয় বৈশিষ্ট্য, অবজেক্ট প্রারম্ভিক, এবং সংগ্রহ প্রারম্ভিক হিসাবে lambdas দ্বারা অন্তর্ভুক্ত।

Some LINQ features use classes, interfaces, delegates, and extension methods that live in the new 3.5 assemblies (such as System.Core.dll). Redistributing these assemblies is a license violation, but they could be reimplemented. Using extension methods need only that you declare an empty System.Runtime.CompilerServices.ExtensionAttribute. LINQ to Objects relies on IEnumerable extensions and several delegate declarations (the Action and Func families) and have been implemented in LINQBridge (as mausch mentioned). LINQ to xml and LINQ to DataSets rely on LINQ to Objects which I guess could also be implemented for .Net 2.0, but I haven't seen this done yet.

LINQ to SQL and LINQ to Entities require many new classes (DataContext/ObjectContext, lots of attributes, EntitySet, EntityRef, Link, IQueryable, etc) and expression trees, which, even if somehow reimplemented, will probably require at least .Net 2.0 SP1 to work.

0
যোগ