লিনকিউ কী এবং এটি কী করে? [বন্ধ]


126

লিনকিউ কী? আমি জানি এটি ডাটাবেসের জন্য, তবে এটি কী করে?


20
আমি বিশ্বাস করি যে আমি "যুক্তিসঙ্গতভাবে উত্তর দেওয়া যায় না" মানদণ্ডকে পরাজিত করেছি। এই প্রশ্নটি বন্ধ হওয়ার কোনও কারণ নেই।
অ্যামি বি

উত্তর:


171

লিনকিউ এর অর্থ ভাষা ইন্টিগ্রেটেড ক্যোয়ারী

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

NET ফ্রেমওয়ার্কের অংশগুলি (3.5) এর সাথে এই অনুসন্ধান শুরু করি।

  • LINQ অবজেক্টস - পরীক্ষা System.Linq.Enumerable ক্যোয়ারী পদ্ধতিগুলির জন্য। এই লক্ষ্যবস্তু IEnumerable<T>, যে কোনও টাইপযুক্ত লুপযোগ্য সংগ্রহকে টাইপ-নিরাপদ পদ্ধতিতে জিজ্ঞাসা করার অনুমতি দেয়। এই প্রশ্নগুলি এক্সপ্রেশন নয়, সংকলিত নেট পদ্ধতিতে নির্ভর করে।

  • লিনকিউ টু এথিং - কিছু পরীক্ষার পদ্ধতির জন্য System.Linq.Queryable পরীক্ষা করুন । এই লক্ষ্য IQueryable<T>, এক্সপ্রেশন ট্রিগুলি নির্মাণের অনুমতি দেয় যা অন্তর্নিহিত বাস্তবায়ন দ্বারা অনুবাদ করা যেতে পারে।

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

  • লিনকিউ টু এসকিউএল - সিস্টেম.ডাটা.লিনক নেমস্পেস পরীক্ষা করুন । বিশেষত নোট করুন DataContext। এটি সি # টিম দ্বারা নির্মিত ডেটাঅ্যাক্সেস প্রযুক্তি। এটা ঠিক কাজ করে।

  • সত্তার প্রতি লিনকিউ - সিস্টেমটি.ডাটা.অবজেক্টস নেমস্পেস পরীক্ষা করুন । বিশেষত নোট করুন ObjectContext। এটি ADO.NET টিম দ্বারা নির্মিত একটি ডেটাঅ্যাক্সেস প্রযুক্তি। এটি লিনকিউ থেকে এসকিউএল-এর চেয়ে জটিল, শক্তিশালী এবং ব্যবহার করা শক্ত।

  • লিনকু টু এক্সএমএল - System.XML.Linq নেমস্পেস পরীক্ষা করুন । মূলত, লোকেরা স্টাফ দিয়ে সন্তুষ্ট ছিল না System.Xml। তাই মাইক্রোসফ্ট এটি পুনরায় লিখেছিল এবং এক্সএমএলের বিপরীতে লিনকিউ টু অবজেক্ট ব্যবহার করা সহজতর করে এমন কিছু পদ্ধতি প্রবর্তন করার জন্য পুনরায় লেখার সুযোগ নিয়েছে।

  • কিছু চমৎকার সহায়ক ধরণের, যেমন ফানক এবং অ্যাকশন । এই ধরণেরগুলি জেনেরিক সমর্থন সহ প্রতিনিধি। আজকের দিনগুলি হয়ে গেল আপনার নিজস্ব কাস্টম (এবং আন-বিনিময়যোগ্য) প্রতিনিধি প্রকারের ঘোষণার দিনগুলি।

উপরের সমস্তগুলি নেট ফ্রেমওয়ার্কের অংশ, এবং যে কোনও। নেট ভাষা (ভিবি.এনইটি, সি #, আয়রন পাইথন, কোবোল। নেট ইত্যাদি) থেকে উপলব্ধ।


ঠিক আছে, ভাষা বৈশিষ্ট্যগুলিতে। আমি সি # তে লেগে যাচ্ছি, যেহেতু আমি সবচেয়ে ভাল জানি। ভিবি.এনইটি-তেও বেশ কয়েকটি অনুরূপ উন্নতি হয়েছে (এবং একটি দম্পতি যা সি # পায়নি - এক্সএমএল আক্ষরিক)। এটি একটি সংক্ষিপ্ত এবং অসম্পূর্ণ তালিকা।

  • এক্সটেনশন পদ্ধতি - এটি আপনাকে টাইপ করার একটি পদ্ধতি "যুক্ত" করতে দেয়। পদ্ধতিটি আসলেই একটি স্থিতিশীল পদ্ধতি যা এই ধরণের একটি উদাহরণ পাস হয়ে যায় এবং এটি সরকারী চুক্তিতে সীমাবদ্ধ থাকে তবে আপনি নিয়ন্ত্রণ করেন না এমন স্ট্রিংগুলিতে পদ্ধতি যুক্ত করার জন্য (স্ট্রিং) যোগ করার জন্য বা এটি পুরোপুরি বাস্তবায়িত করার জন্য এটি খুব কার্যকর ) ইন্টারফেস সাহায্যকারী পদ্ধতি।

  • ক্যোহেরিহেন্স সিনট্যাক্স - এটি আপনাকে এসকিউএল লাইক স্ট্রাকচারে লেখার অনুমতি দেয়। এই স্টাফের সমস্তটি System.Linq.Queryable বা System.Linq.Eeumerable (myCustomers এর ধরণের উপর নির্ভর করে) এর পদ্ধতিগুলিতে অনুবাদ হয়ে যায়। এটি সম্পূর্ণরূপে alচ্ছিক এবং আপনি এটি ব্যতীত লিনকুই ব্যবহার করতে পারেন। ক্যোয়ারী ঘোষণার এই স্টাইলের একটি সুবিধা হ'ল পরিসীমা ভেরিয়েবলগুলি স্কোপ করা হয়: তাদের প্রতিটি অনুচ্ছেদের জন্য পুনরায় ঘোষণার প্রয়োজন হয় না।

    IEnumerable<string> result =
     from c in myCustomers
     where c.Name.StartsWith("B")
     select c.Name;
  • লাম্বদা এক্সপ্রেশন - এটি কোনও পদ্ধতি নির্দিষ্ট করার জন্য একটি শর্টহ্যান্ড। সি # সংকলক প্রতিটি অনামী পদ্ধতিতে বা সত্যে অনুবাদ করবে System.Linq.Expressions.Expression। লিনককে ভালভাবে ব্যবহার করার জন্য আপনার এগুলি সত্যই বুঝতে হবে। এখানে তিনটি অংশ রয়েছে: প্যারামিটারের তালিকা, একটি তীর এবং একটি পদ্ধতি বডি।

    IEnumerable<string> result = myCustomers
     .Where(c => c.Name.StartsWith("B"))
     .Select(c => c.Name);`
  • নামবিহীন প্রকারের - কখনও কখনও সংকলকটি আপনার জন্য টাইপ তৈরি করতে পর্যাপ্ত তথ্য রাখে। এই প্রকারগুলি সত্যই বেনামে নয়: সংকলক যখন সেগুলি তৈরি করে তখন তাদের নাম দেয়। কিন্তু এই নামগুলি সংকলন সময়ে তৈরি করা হয়, যা কোনও বিকাশকারী ডিজাইনের সময় সেই নামটি ব্যবহার করতে দেরি করে।

    myCustomers.Select(c => new 
    {
      Name = c.Name;
      Age = c.Age;
    })
  • অন্তর্ভুক্ত প্রকারভেদ - কখনও কখনও সংকলক সূচনা থেকে পর্যাপ্ত তথ্য থাকে যা এটি আপনার জন্য প্রকারটি বের করতে পারে। আপনি সংকলককে ভার কীওয়ার্ড ব্যবহার করে তা করতে নির্দেশ দিতে পারেন। বেনামে প্রকারের জন্য ভেরিয়েবলগুলি ঘোষণার জন্য অন্তর্নিহিত টাইপিংয়ের প্রয়োজন, যেহেতু প্রোগ্রামাররা বেনামে টাইপের নাম ব্যবহার না করে ।

    // The compiler will determine that names is an IEnumerable<string>
    var names = myCustomers.Select(c => c.Name);

14

লিনকিউ (ভাষা সংহত জিজ্ঞাসা) উল্লেখ করতে পারে:

  • সংগ্রহ এবং পুনরাবৃত্তির কারসাজির জন্য একটি গ্রন্থাগার যা আর্গুমেন্ট হিসাবে উচ্চ-অর্ডার ফাংশনগুলির বিস্তৃত ব্যবহার করে (System.Linq)

  • বিমূর্ত সিনট্যাক্স ট্রি (সিস্টেম.লিংক.এক্সপ্রেসন) হিসাবে সাধারণ ফাংশনগুলির পাস ও হেরফেরের জন্য একটি গ্রন্থাগার

  • প্রসেসিং সংগ্রহের জন্য আরও এসকিউএল-জাতীয় সিনট্যাক্স, বেনামি ফাংশনগুলির জন্য আরও কমপ্যাক্ট স্বরলিপি এবং চূড়ান্ত সদস্য ফাংশনগুলি থেকে সিনট্যাক্টভাবে পৃথক পৃথকভাবে স্থিতি সহায়ক সাহায্যকারী ফাংশনগুলি প্রবর্তনের ব্যবস্থা করার জন্য বিভিন্ন ভাষায় একটি সিনট্যাক্স এক্সটেনশন

  • একটি ইন্টারফেস সংজ্ঞা যার সাথে ডেটা সরবরাহকারী কোয়েরি কাঠামোটি গ্রহণ করতে এবং তার উপর সম্ভাব্যভাবে অপ্টিমাইজেশন সম্পাদন করতে পারে বা কখনও কখনও সামঞ্জস্যপূর্ণ ডেটা সরবরাহকারীরা নিজেই

উপাদানগুলি বিচ্ছিন্নভাবে বা সংযুক্তিতে ব্যবহৃত হতে পারে।


10

সংক্ষেপে, লিনকিউ (ভাষা-সংহত প্রশ্ন) আপনাকে সরাসরি আপনার কোডে প্রশ্ন লিখতে দেয়। এই ক্যোয়ারীগুলি সম্পর্কিত ডেটাবেজে থাকতে পারে তবে এক্সএমএল বা মেমরির ইন-মেমরি ধারক বস্তুগুলিতে যেমন অ্যারে এবং তালিকাগুলিতেও হতে পারে। এমএসডিএন লাইব্রেরিতে আরও তথ্য পাওয়া যায়: http://msdn.microsoft.com/en-us/library/bb308959.aspx


এটি সুনির্দিষ্ট এবং সংক্ষিপ্ত
এসএসডি

6

আমি একটি সহজ উত্তরের জন্য চেষ্টা করব: লিনিক্যু আপনার জন্য একটি ডাটাবেস (বা অন্য ডেটাস্টোর, এক্সএমএল ইত্যাদি) কোয়েরি ভাষা ব্যবহার করে যা এসকিউএল এর অনুরূপ তবে একটি নেট অ্যাপ্লিকেশনটির ভিতরে সংকলন করা যায়।


1
সুতরাং লিনক এবং এসকিউএল মধ্যে ঠিক পার্থক্য কি?
ক্রেডেনস

এর জন্য আরও পরিশীলিত নাম রয়েছে বলে আমি মনে করি তবে কাঠামোগুলি পৃথক রয়েছে: এসকিউএল হল কোথা থেকে নির্বাচন করুন এবং লিনকিউ কোথা থেকে নির্বাচন করুন নির্বাচন করুন। লিনকিউ এর সাথে লুপ করা সহজ। লিনকুই কেবল সহজ) এবং এসকিউএল এটি উত্পাদন করে সময় সাশ্রয় বিবেচনা করে সাধারণত যথেষ্ট ভাল।
jcollum

2
সৎ হতে, এক তর্ক হতে পারে এসকিউএল উচিত হিসেবে লেখা যেতে From Where Select, etc.- অর্থাৎ ভাবে লিখতে হবে যে ফলাফল সেট আসলে গঠিত হয়
ডন জন্য Cheadle

6

লিনকিউ বলতে ল্যাঙ্গুয়েজ ইন্টিগ্রেটেড ক্যোয়ারী বোঝায় , এবং এটি সিএলআরতে একটি সাধারণ উদ্দেশ্য "অনুসন্ধান" প্রক্রিয়া সরবরাহ করার একটি উপায়।

এটি বেশিরভাগ মৌলিক স্তরে, এটি আইনিউমেবল <টি> - যেমন নির্বাচন করুন, যোগ করুন, কোথায় - যা বিধিনিষেধ, অনুমান ইত্যাদির জন্য ব্যবহার করা যেতে পারে সেগুলির জন্য কয়েকটি পদ্ধতির সেট নিয়ে গঠিত [[1]

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

সি # এবং ভিবি.এনইটি একটি কোয়েরি সিনট্যাক্সও সংজ্ঞায়িত করেছে যা আপনাকে দৃ strongly়ভাবে টাইপ করা প্রশ্নের ইনলাইন (এটি এসকিউএল এর সাথে খুব সাদৃশ্যপূর্ণ) লিখতে দেয়, যা সংকলকটি তারপরে আইকনামেবল <T> কলগুলিতে অনুবাদ করে।

আমার কাছে, লিনিক্যু সম্পর্কে সবচেয়ে আকর্ষণীয় বিষয় হ'ল এটির জন্য প্রয়োজনীয় সমস্ত সি # এবং ভিবি.এনইটি বৈশিষ্ট্যগুলি তাদের নিজস্বভাবে কার্যকর। LINQ সমর্থন করার জন্য এক্সটেনশন পদ্ধতি, বেনামে প্রকারের, ল্যাম্বডা এক্সপ্রেশন এবং অন্তর্নিহিত টাইপিংয়ের সমস্ত প্রয়োজন ছিল - তবে আমরা এই বৈশিষ্ট্যগুলিকে খাঁটি লিনকিউ প্রসঙ্গে বাইরে ব্যবহার করার প্রবণতা অর্জন করি।

[1] এগুলি সম্পর্কের শর্তাবলী, ক্রিয়ামূলক প্রোগ্রামাররা সম্ভবত মানচিত্র, হ্রাস, ভাঁজ ইত্যাদি পছন্দ করবে would


5

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

লিনকিউ এবং এর সীমাবদ্ধতার আলোচনার জন্য আপনি এই সম্পর্কিত প্রশ্নটি একবার দেখে নিতে চাইতে পারেন: এসকিউএল থেকে লিনকুই কি পয়েন্টটি মিস করে না?


0

http://msdn.microsoft.com/en-us/netframework/aa904594.aspx

"লিনকিউ প্রকল্পটি ভাষা-সংহত ক্যোয়ারী, সেট, এবং ট্রান্সফর্ম অপারেশনগুলিকে অন্তর্ভুক্ত করে .NET ফ্রেমওয়ার্কের এক্সটেনশনের একটি সেটের একটি কোডের নাম It এটি সি # এবং ভিজ্যুয়াল বেসিককে কোয়েরিগুলির জন্য স্থানীয় ভাষা বাক্য গঠন সহ প্রসারিত করে এবং শ্রেণি পাঠাগারগুলিকে সুবিধা গ্রহণের জন্য সরবরাহ করে এই ক্ষমতা। "


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