এটা লিনক নাকি ল্যাম্বদা?


105

আমি জানি যে এটি লিনক:

var _Results = from item in _List
                where item.Value == 1
                select item;

এবং আমি জানি এটি ল্যাম্বদা:

var _Results = _List.Where(x => x.Value == 1);

সম্পাদকের দ্রষ্টব্য: উপরেরটি কেবল ল্যাম্বদা নয়, এটি লিনক হ'ল "মেথড সিনট্যাক্স" ব্যবহার করে যার শিকারী একটি লাম্বদা। স্পষ্টতই, উপরের দুটি নমুনা লিনক (আমার মূল পোস্টটি ভুল ছিল, তবে আমি প্রশ্নটি উত্থাপনকারী বিভ্রান্তিটি চিত্রিত করতে ত্রুটি রেখেছি)।

তবে লিনক কি ল্যাম্বদার একটি উপসেট বা কী?

দুটি আপাতদৃষ্টিতে অভিন্ন প্রযুক্তি রয়েছে কেন?

একে অপরকে বেছে নেওয়ার প্রযুক্তিগত কারণ আছে কি?


উত্তর:


135

এটি লিনকুই (ক্যোয়ারী সিনট্যাক্স ব্যবহার করে):

var _Results = from item in _List
                where item.Value == 1
                select item;

এটি লিনকিউ (পদ্ধতি সিনট্যাক্স ব্যবহার করে):

var _Results = _List.Where(x => x.Value == 1);

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

আর এই একটি ল্যামডা হল:

x => x.Value == 1

আপনি যখন পদ্ধতি সিনট্যাক্স ব্যবহার করতে পছন্দ করেন, লিনক্যা প্রায় সবসময় ল্যাম্বডা এক্সপ্রেশনগুলির চারপাশে দেখা যায়। তবে লিনকুই এবং ল্যাম্বডাস দুটি সম্পূর্ণ ভিন্ন জিনিস, যা উভয়ই নিজেরাই ব্যবহার করতে পারেন।

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


2
আমি মনে করি এটি উল্লেখ করা উচিত যে ক্যোরিয়াম সিনট্যাক্সগুলিও পর্দার আড়ালে ল্যাম্বডাস ব্যবহার করে। এটি বন্ধ হওয়ার কারণে গুরুত্বপূর্ণ হতে পারে।
সুইভ

34

দুজনেই লিনক। দ্বিতীয়টি ল্যাম্বডাস ব্যবহার করছে

ল্যাম্বডাস হ'ল ইনলাইন মেথড টাইপ জিনিস যা আপনি দ্বিতীয় উদাহরণে যেখানে ফাংশনটিতে প্যারামিটার হিসাবে পাস করছেন।

এই দুটি সিনট্যাক্সের মধ্যে পার্থক্যটি বিশুদ্ধভাবে সিনট্যাকটিক। পদ্ধতি কলগুলি ব্যবহার করে দ্বিতীয় লিঙ্ক স্টাইলটি হুডের নীচে কীভাবে কাজ করে তা হল। প্রথমটি আরও বেশি ব্যবহারকারী বান্ধব / সহজ হতে বোঝায় এবং সংকলক এটিকে পর্দার আড়ালে মেথড কলগুলিতে রূপান্তর করে। কোনও প্রদত্ত ক্যোয়ারির জন্য তাদের একই কাজ করা উচিত যদিও অবশ্যই সংকলকটি পদ্ধতি শৈলীতে রূপান্তর করার সময় আপনার চেয়ে জটিল লিঙ্কের ক্যোয়ারির একটি পৃথক পৃথক ব্যাখ্যা বেছে নিতে পারে।

এই এমএসডিএন নিবন্ধটি খুব আগ্রহীও হতে পারে: লিনকিউ ক্যোয়ারী সিনট্যাক্স বনাম পদ্ধতি সিনট্যাক্স । বিশেষ প্রাসঙ্গিকতার মধ্যে রয়েছে: "সাধারণভাবে, আমরা কোয়েরি সিনট্যাক্সের সুপারিশ করি কারণ এটি সাধারণত সহজ এবং আরও পঠনযোগ্য; তবে পদ্ধতি সিনট্যাক্স এবং ক্যোয়ারী সিনট্যাক্সের মধ্যে কোনও সিমেন্টিক পার্থক্য নেই।"


6
ব্যক্তিগতভাবে, আমি পদ্ধতির বাক্য গঠনটি আরও পঠনযোগ্য বলে মনে করি - সম্ভবত আমার কোডের বেশিরভাগই "লাইনক টু অবজেক্টস" বিচিত্রের। তবে আপনার যদি অনেকগুলি এসকিউএল অভিজ্ঞতা থাকে তবে সম্ভবত ক্যোয়ার সিনট্যাক্সটি প্রথমে বুঝতে সহজ হবে।
টম বুশেল 12'11

@ টম বুশেল, এমনকি সিনট্যাক্সে যোগদান করবেন? সিরিয়াসলি?
জেরি নিকসন

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

@ জেরি - ক্রিসের মতো এখন পর্যন্ত আমার লিনকিউ কাজটি বেশ সহজ হয়েছে। আমি পড়েছি যে সিলেকম্যানি, জয়েন বা গ্রুপজয়িন করার সময় কোয়েরি সিনট্যাক্সটি সাধারণত পছন্দনীয় - আমার এখনও তেমন কিছু করার দরকার নেই - এখনও!
টম বুশেল

1
অভ্যন্তরীণভাবে "ক্যোয়ারির সিনট্যাক্স" কে লিনকোতে এসকিউএল এবং লিনকিউতে সংস্থাগুলির দলগুলিকে "বোঝার বাক্য গঠন" হিসাবে উল্লেখ করা হয়েছিল।
ড্যামিয়েনজি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.