লিনকিউ এর সবচেয়ে কঠিন বা সবচেয়ে ভুল বোঝাবুঝি দিকটি কী? [বন্ধ]


282

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

সুতরাং, আপনি কি সম্পর্কে কঠিন খুঁজে পেয়েছেন LINQ? ভুল বোঝাবুঝির পরিপ্রেক্ষিতে আপনি কী দেখেছেন? উদাহরণগুলির মধ্যে নিম্নলিখিতগুলির মধ্যে কোনও একটি হতে পারে তবে দয়া করে নিজেকে সীমাবদ্ধ করবেন না!

  • কিভাবে C#কম্পাইলার একইরূপে ক্যোয়ারী এক্সপ্রেশন
  • লাম্বদা এক্সপ্রেশন
  • এক্সপ্রেশন গাছ
  • সম্প্রসারণ পদ্ধতি
  • নামবিহীন প্রকারের
  • IQueryable
  • স্থগিত বনাম অবিলম্বে মৃত্যুদণ্ড কার্যকর করা
  • স্ট্রিমিং বনাম বাফার এক্সিকিউশন (উদাহরণস্বরূপ অর্ডারবাই পেছানো হয়েছে তবে বাফার হয়েছে)
  • সুস্পষ্টভাবে স্থানীয় ভেরিয়েবলগুলি টাইপ করা
  • জটিল জেনেরিক স্বাক্ষরগুলি পড়া (উদাহরণস্বরূপ গণনাযোগ্য.জয়াইন )

3
আপনি কখন এই আলোচনা করতে যাচ্ছেন এবং আমি অনলাইনে দেখার কোনও উপায় থাকলে তা জানতে আগ্রহী হব
মার্ক হিথ

2
প্রথম আলাপ: 30 অক্টোবর কোপেনহেগেন। আশা করি এটি টেপ হয়ে যাবে। (পুরো দিন!) দ্বিতীয় আলোচনা: লন্ডন, 19 নভেম্বর সন্ধ্যায়, লন্ডন। নেট ব্যবহারকারীদের গ্রুপ, সম্ভবত পুশ লিনকিতে। তৃতীয় আলোচনা: পড়া, 22 নভেম্বর, বিকাশকারী বিকাশকারী দিবস, 60 মিনিটের মধ্যে অবজেক্টগুলিতে LINQ প্রয়োগ করা।
জন স্কিটি

1
ডাউনভোটার্স: দয়া করে একটি ব্যাখ্যামূলক মন্তব্য যুক্ত করুন।
জন স্কিটি

2
@ জন, দুঃখিত, তবে আমার এটি বন্ধ করা দরকার।
টিম পোস্ট

3
@ টিম: যথেষ্ট ন্যায্য - এটি আর কোনও উত্তর পাচ্ছিল না। ব্যক্তিগতভাবে আমি মনে করি এটা করেনি গঠনমূলক হচ্ছে শেষ, তুমি কিছু মনে - আমি অবশ্যই এটা মানুষের চতুর কি খুঁজে পায় তা দেখার জন্য উপযোগী পাওয়া যায় নি। আমি সম্ভবত এটি এখনই জিজ্ঞাসা করতাম না ...
জোন স্কিট

উত্তর:


271

বিলম্বিত কার্যকর হয়েছে


12
রাইটো - এটি স্পষ্টতই পাঠকদের মধ্যে প্রিয়, যা এই প্রশ্নের সবচেয়ে গুরুত্বপূর্ণ বিষয়। আমি মিশ্রণের সাথে "বাফারিং বনাম স্ট্রিমিং" যুক্ত করব, যা এটি খুব ঘনিষ্ঠভাবে সম্পর্কিত - এবং প্রায়শই আমি বইগুলিতে দেখতে চাই না কেন তত বিশদে আলোচনা করা হয় না।
জন স্কিটি

10
সত্যি? লিনক শেখার সময় আমার কাছে এটি অলস বোঝাই প্রকৃতি আমাকে বহুবার নির্দেশ করেছিল, এটি আমার পক্ষে কখনই সমস্যা ছিল না।
আদম লাসেক

26
আলাসেকের সাথে একমত এমএসডিএন ডকুমেন্টেশনগুলিতে স্পষ্টভাবে লিনকিউয়ের অলস মূল্যায়ন প্রকৃতির বর্ণনা রয়েছে। সম্ভবত আসল সমস্যাটি হ'ল বিকাশকারীদের অলস প্রোগ্রামিং প্রকৃতি ... =)
সেটি

4
... বিশেষত যখন আপনি বুঝতে পারেন যে এটি লিনকিউ-র সাথে কেবলমাত্র লাইনকিউ 2 এসকিউএল-তে নয়, যখন আপনি ইতিমধ্যে সেই একই তালিকার মাধ্যমে তালিকা তৈরি করছেন যখন আপনি 10 টি ওয়েব পদ্ধতির কল দেখতে পাবেন তখন আইটেমের একটি তালিকা পুনরুদ্ধার করতে পারেন এবং আপনি ভেবেছিলেন তালিকাটি ইতিমধ্যে মূল্যায়ন করা হয়েছিল
সাইমন_উইভার

5
ফলনের বিবরণী কী এবং এটি কীভাবে কাজ করে তা লিনকু সম্পর্কে সম্পূর্ণ বোঝার জন্য IMHO সমালোচনা।
পিশির

125

আমি জানি স্থগিত বাস্তবায়ন ধারণাটি এখনই আমার মধ্যে প্রহার করা উচিত, তবে এই উদাহরণটি সত্যই আমাকে এটির ব্যবহারিক উপলব্ধি পেতে সাহায্য করেছিল:

static void Linq_Deferred_Execution_Demo()
{
    List<String> items = new List<string> { "Bob", "Alice", "Trent" };

    var results = from s in items select s;

    Console.WriteLine("Before add:");
    foreach (var result in results)
    {
        Console.WriteLine(result);
    }

    items.Add("Mallory");

    //
    //  Enumerating the results again will return the new item, even
    //  though we did not re-assign the Linq expression to it!
    //

    Console.WriteLine("\nAfter add:");
    foreach (var result in results)
    {
        Console.WriteLine(result);
    }
}

উপরের কোডটি নিম্নলিখিতগুলি প্রদান করে:

Before add:
Bob
Alice
Trent

After add:
Bob
Alice
Trent
Mallory

2
ব্লগস.এমএসএন / বি / চার্লি / অর্চিভ / ২০০7/১২/২০১/ << - আমি মনে করি এটি আমার মতে এটি ব্যাখ্যা করার জন্য এটি সেরা ব্লগ। (2007 এর বাইরে, বিশ্বাস করা যায় না এটি ইতিমধ্যে এতদিন আগে ছিল)
ফিল্ড

104

শুধু বেশী যে LINQকরতে SQLএবং বৈশিষ্ট্য শুধু একটি ছাড়া আর কিছুই নয় SQLপার্সার ভাষা এমবেড।


6
আমি এই ভেবে প্রত্যেকের কাছেই অসুস্থ: /
ট্রমাপনি

40
সবাই করে না! আমি এখনও জানি না যে লিনকিউ থেকে এসকিউএল কী, এবং আমি লিনকিউ সমস্ত জঘন্য সময় ব্যবহার করি।
রবার্ট রসনি

2
আমি যখন লিনকিউ ব্যবহার করে কিছু ব্যাখ্যা করার চেষ্টা করি এবং ব্যাখ্যা করি তখন আমি খুব বিরক্ত হই এবং অন্য ব্যক্তি কেবল আমার দিকে তাকিয়ে বলে যে "ওহহ আমি লিংকউ এর মতো কোনও কিছুর জন্য ব্যবহার করি না, কেবল এসকিউএল" :(
নাথান ডাব্লু

13
সম্মত হয়েছে, অনেক লোক বুঝতে পারে না যে লিনকুই একটি সাধারণ উদ্দেশ্য সরঞ্জাম।
ম্যাথু ওলানিক

86

বড় ও স্বরলিপি । লিনিকিউ এটি বুঝতে না পেরে ও (এন ^ 4) অ্যালগরিদমগুলি লিখতে অবিশ্বাস্যভাবে সহজ করে তোলে, যদি আপনি না জানেন যে আপনি কী করছেন।


16
কিভাবে একটি উদাহরণ?
হুগডব্রাউন

4
উদাহরণ হিসাবে, সম্ভবত তার অর্থ এই যে খুব সহজেই একটি সিলেক্ট ক্লজটিতে অনেকগুলি যোগফল () অপারেটর রয়েছে যার মধ্যে প্রত্যেকটি পুরো রেকর্ডসেটের উপর দিয়ে অন্য পাস করে।
রব প্যাকউডউড

1
প্রকৃতপক্ষে এটি বড় ও স্বরলিপি কী এবং এটি কেন গুরুত্বপূর্ণ, পাশাপাশি অকার্যকর ফলাফল ফলাফলের কয়েকটি প্রশ্নের উদাহরণগুলিও মূল্যবান হতে পারে। আমি মনে করি যে এটির মূল পোস্টারটিই পরামর্শ দিচ্ছিল, তবে আমি ভেবেছিলাম যে যাই হোক আমি এটি উল্লেখ করব। - সম্পাদনা: ঠিক বুঝতে পেরেছি যে এই পোস্টটি 1.5 বছরের পুরানো :-)
zcrar70

7
এটি O (n ^ x) হবে না, এটি ও (xn) হবে, যা কেবল ও (এন)।
মালফিস্ট

3
জয়েন অপারেটর ব্যতীত যোগদানের চেষ্টা করার ফলে ও (n ^ x) ফলাফল হবে: আই 1 থেকে রেঞ্জ 1 এ রেঞ্জ 2 এ আই 3 থেকে আই 3 রেঞ্জ 3 এ আই 4 যেখানে আই 1 == i2 && i3 == i4 নতুন select i1 নির্বাচন করুন, i2, i3, i4}। এবং আমি আসলে এই আগে লেখা দেখেছি। এটি কাজ করে তবে খুব ধীরে ধীরে।
মার্কপ্লাগ

55

আমি মনে করি যে এই Lambdaঅভিব্যক্তিটি একটি অভিব্যক্তি গাছ এবং বেনামে প্রতিনিধি উভয়কেই সমাধান করতে পারে, সুতরাং আপনি একই ঘোষণামূলক lambdaপ্রকাশটি IEnumerable<T>এক্সটেনশন পদ্ধতি এবং IQueryable<T>এক্সটেনশন পদ্ধতির উভয়কেই দিতে পারেন ।


2
একমত। আমি একজন প্রবীণ এবং আমি বুঝতে পেরেছিলাম যে এই অনিষ্ট
P

53

আমাকে গ্রহণ পথ উপলব্ধি করা যে এই ধরনের হিসাবে অনেক LINQ এক্সটেনশন পদ্ধতি অত্যন্ত দীর্ঘ Single(), SingleOrDefault()overloads যে lambdas নিতে ইত্যাদি।

আপনি করতে পারেন :

Single(x => x.id == id)

এবং এটি বলার দরকার নেই - যা কিছু খারাপ টিউটোরিয়াল আমাকে অভ্যাস করেছিল

Where(x => x.id == id).Single()

+1, খুব সুন্দর। আমি এটা মনে রাখব।
প্রেটজেল

4
আমি এটিকেও ভুলে যেতে থাকি। এটি Count()অন্যদের মধ্যেও সত্য । কোড পাঠযোগ্যতার সুস্পষ্ট বোনাস ছাড়াও কোনও পারফরম্যান্সের পার্থক্য রয়েছে কিনা তা আপনি জানেন?
জাস্টিন মরগান

1
বিশ্ববিদ্যালয়ে, আমার প্রভাষক এই ওভারলোডগুলি ব্যবহারের জন্য পয়েন্টগুলি বন্ধ করতে চেয়েছিলেন !! আমি তাকে ভুল প্রমাণ করেছি!
টিডিএভার

12
এটি অদ্ভুত লাগতে পারে তবে আমি দ্বিতীয় বাক্য গঠনটি পছন্দ করি। আমি এটি আরও পাঠযোগ্য বলে মনে করি।
কোনামিমন

40

লিনকিউ থেকে এসকিউএল এ আমি প্রতিনিয়ত দেখতে পাই যে লোকেরা ডেটা কনটেক্সটকে বোঝে না, কীভাবে এটি ব্যবহার করা যেতে পারে এবং কীভাবে এটি ব্যবহার করা উচিত। অনেক লোক ডেটা কনটেক্সটটি তা কীসের জন্য দেখতে পায় না, এটি ইউনিট অফ ওয়ার্ক অবজেক্ট, একটি স্ট্রাইস্ট অবজেক্ট নয়।

আমি প্রচুর সময় দেখেছি যেখানে লোকেরা প্রতিটি ক্রিয়াকলাপের জন্য একটি নতুন সময় তৈরির পরিবর্তে কোনও ডেটা কনটেক্সট / সেশন এটি / ইত্যাদি একক করার চেষ্টা করছে।

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

অন্যান্য ধারণার সাথে আমি অনেক বিভ্রান্তি দেখতে পাচ্ছি হ'ল ক্যোরি সিনট্যাক্স বনাম এক্সপ্রেশন সিন্ট্যাক্স। আমি সেই মুহূর্তে সবচেয়ে সহজ যা ব্যবহার করব, প্রায়শই এক্সপ্রেশন সিনট্যাক্সের সাথে লেগে থাকি। অনেক লোক এখনও বুঝতে পারে না যে তারা শেষ পর্যন্ত একই জিনিসটি তৈরি করবে, ক্যোরি সব পরে অভিব্যক্তিতে সংকলিত।


2
সতর্কতা: কাজের একক সিঙ্গলটন হিসাবে ডেটা প্রসঙ্গে একটি ছোট প্রোগ্রাম হতে পারে।
গ্রাফিক

15
আপনার একক সিলেটে ডেটা কনটেক্সট ব্যবহার করা উচিত নয়, এটি থ্রেড নিরাপদ নয়।
অ্যারন পাওয়েল

3
@ স্লেস, সমস্ত প্রোগ্রাম একচেটিয়াভাবে থাকে না, তাই অনেকগুলি "ডেস্কটপ" সফ্টওয়্যারটিতে সিঙ্গেলটন হিসাবে ডেটা কনটেক্সট রাখা ঠিক হবে
ইয়ান রিংরোজ

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

1
আমার মাথায় এই আঘাত পেতে লিঙ্কের স্কটগুর আর্টিভেলগুলি একাধিকবার পড়েছিল।
ইভান প্লেস

34

আমি মনে করি লিনকিউ- ভুল ধারণাটি হ'ল এটি ভাষা এক্সটেনশন , কোনও ডাটাবেস এক্সটেনশন বা নির্মাণ নয় const

LINQচেয়ে আরও অনেক কিছু হয় LINQ to SQL

এখন আমাদের বেশিরভাগ LINQসংগ্রহগুলিতে ব্যবহার হয়েছে, আমরা আর ফিরে যাব না!

LINQ 2.0 তে জেনারিকস এবং 3.0 এ বেনামে টাইপ করা থেকে নেট .NET- এ একমাত্র উল্লেখযোগ্য বৈশিষ্ট্য।

এবং এখন আমাদের ল্যাম্বডা আছে, আমি সমান্তরাল প্রোগ্রামিংয়ের জন্য অপেক্ষা করতে পারি না!


এমনকি আমি এটিকে বেনামে প্রকারের চেয়ে বেশি উল্লেখযোগ্য এবং সম্ভবত জেনেরিকের চেয়েও বেশি কল করব।
জাস্টিন মরগান

26

আমি একজনের পক্ষে নিশ্চিত হয়ে জানতে চাই যে আমার কী গাছের অভিব্যক্তি এবং কী কারণে তা জানতে হবে।


6
আমি মনে করি গাছগুলি কী এবং কীভাবে সেগুলির অস্তিত্ব রয়েছে তা জেনে রাখা মূল্যবান তবে সেগুলি কীভাবে নিজে তৈরি করবেন তার বিশদ নয়। (এগুলি হাতে তৈরির ব্যথা, তবে ল্যাম্বডা এক্সপ্রেশনকে রূপান্তর করার সময় সংকলক দুর্দান্ত কাজ করবে))
জন স্কিটি

3
প্রকৃতপক্ষে, আমি অভিব্যক্তি গাছগুলিতে কয়েকটি ব্লগ এন্ট্রি করার কথা ভাবছিলাম (যেহেতু আমি সেগুলি "পেতে" পারি) আমি অভিব্যক্তি গাছগুলিতে
হেরফের করছি

যাইহোক, আমি মনে করি না যে তারা জনের আলাপ (গুলি) এর জন্য সহায়ক হবে ;
মার্ক

3
আমি কেবল উদ্বিগ্ন যে উদ্ভিদ গাছগুলি ফলন বিবরণের মতো হতে চলেছে: এমন একটি জিনিস যা আমি প্রথমে এর জন্য কী তা বুঝতে পারি নি তা সত্ত্বেও অবিশ্বাস্যভাবে মূল্যবান বলে প্রমাণিত হয়েছিল।
রবার্ট রসনি

1
মার্ক গ্র্যাভেল আমি বিষয়টিতে আপনার ব্লগের এন্ট্রিগুলি পড়তে পছন্দ করব। এটির অপেক্ষায়
আলেকজান্দ্রে ব্রাইসোবাইস

20

আমি লিনকুতে মোটামুটি নতুন। আমার প্রথম প্রয়াসে আমি হোঁচট খেয়েছি Here

  • একটিকে বেশ কয়েকটি প্রশ্নের সংমিশ্রণ করা
  • কার্যকরভাবে ভিজুয়াল স্টুডিওতে লিনকুই কোয়েরিগুলি ডিবাগ করা।

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

3
এগুলি লিনকিউ প্যাড ব্যবহারের জন্য ভাল জায়গা হতে পারে
মাসলো

2
আন্তরিকভাবে সম্মত হন; সে কারণেই আমি লিনকিউ সিক্রেটস প্রকাশিত লিখেছি : চেইনিং এবং ডিবাগিং , কেবল সিম্পল-টাল ডটকম এ প্রকাশিত, যাতে আপনি সহায়তা পেতে পারেন।
মাইকেল সোরেন্স

হ্যাঁ, লিনকপ্যাড আপনার লিনকুই ক্যোয়ারীগুলিকে বিকাশের জন্য একটি দুর্দান্ত মাধ্যমিক সরঞ্জাম Especially
মহিষ

20

আমি যে বিষয়টি প্রাথমিকভাবে বুঝতে পারি নি তা হ'ল লিনিক্যু সিনট্যাক্সের প্রয়োজন হয় নাIEnumerable<T> বা IQueryable<T>কাজ করতে পারে না , লিনিক্যু কেবল প্যাটার্ন মেলানো সম্পর্কে।

ALT পাঠ্য http://bartdesmet.info/images_wlw/QIsIQueryocolateheRightChoiceforMe_13478/image_thumb_3.png

এখানে উত্তর (না, আমি না যে ব্লগ লিখুন, বার্ট ডি Smet করেনি, এবং তিনি LINQ আমি করেছি পাওয়া সেরা ব্লগারদের এক)।


1
আপনি এই ব্লগ পোস্টটি আকর্ষণীয়ও দেখতে পাবেন: msmvps.com/blogs/jon_skeet/archive/2008/02/29/…
জন স্কিটি

সুন্দর পোস্ট জন (আমি সম্প্রতি আপনার ব্লগে সাবস্ক্রাইব করি)।
অ্যারন পাওয়েল

19

"লেট" কমান্ডটি (যা আমি কখনই ব্যবহার করতে পারি নি) এবং সিলেক্টম্যান (যা আমি ব্যবহার করেছি, তবে আমি নিশ্চিত নই যে আমি এটি সঠিকভাবে সম্পাদন করেছি) নিয়ে এখনও সমস্যা আছে


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

'লেট' আপনাকে সম্মিলিত প্রকারের করতে দেয়। হ্যান্ডি স্টাফ
Phill

19

লিনক সরবরাহকারীদের মধ্যে বিমূর্ততা ফাঁস হওয়ার বিষয়টি বোঝা। কিছু জিনিস বস্তুগুলিতে কাজ করে তবে এসকিউএল নয় (যেমন, .টেকহাইল)। কিছু পদ্ধতি এসকিউএল (টুঅপার) এ অনুবাদ করতে পারে অন্যগুলি পারে না। কিছু কৌশল অবজেক্টগুলিতে আরও দক্ষ হয় যেখানে অন্যরা এসকিউএল (বিভিন্ন যোগদানের পদ্ধতি) তে আরও কার্যকর।


1
এটি একটি খুব ভাল দিক। এটি সাহায্য করে না যে ইন্টেলিসেন্স আপনাকে সেগুলি সমস্ত দেখায় এবং এটি সাধারণত সংকলনও করে। তারপরে আপনি রানটাইমের সময় উড়িয়ে দেবেন। আমি আশা করি ভিএস ২০১০ প্রাসঙ্গিক এক্সটেনশন পদ্ধতিগুলি দেখানোর জন্য আরও ভাল কাজ করবে।
জেসন সংক্ষিপ্ত

12

দু'টি জিনিস।

  1. লিনককে লিনক থেকে এসকিউএল হিসাবে ভাবা মানুষ।
  2. কিছু লোক মনে করেন যে তারা এই পারফরম্যান্সের প্রভাবগুলি বিবেচনা না করেই লিনক প্রশ্নের সাথে সমস্ত ভবিষ্যতবা / যুক্তি প্রতিস্থাপন শুরু করতে পারেন।

11

ঠিক আছে, চাহিদার কারণে আমি কিছু এক্সপ্রেশন সামগ্রী লিখে রেখেছি। ব্লগার এবং লাইভ রাইটার কীভাবে এটির ফর্ম্যাট করার ষড়যন্ত্র করেছিল তাতে আমি 100% খুশি নই, তবে এটি এখনই করবে ...

যাইহোক, এখানে যায় ... আমি কোনও প্রতিক্রিয়া পছন্দ করব, বিশেষত এমন ক্ষেত্রগুলি যেখানে লোকেরা আরও তথ্য চায়।

এটি এটির মতো, এটি পছন্দ করুন বা ঘৃণা করুন ...


10

কিছু ত্রুটি বার্তা, বিশেষত লিনকিউ থেকে এসকিউএল পর্যন্ত বিভ্রান্তিকর হতে পারে। কষ্টহাসি

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

আমি এখনও অবাক হয়েছি যে আপনি কখনও কখনও ফাঁকা দশমিক / অর্থ কলামে একটি যোগফল () করতে পারবেন না। DefaultIfEmpty () ব্যবহার করা ঠিক কাজ করবে না। :(


1
সমষ্টিটি কাজ করার জন্য সেই প্রশ্নের উপর যেখানে থাপ্পড় মারতে সহজ হতে পারে তা দেখানো হয়েছে
এসবেন স্কোভ পেডারসেন

9

আমি মনে করি যে লিনকিউ-তে অন্তর্ভুক্ত করার জন্য একটি দুর্দান্ত জিনিস হ'ল আপনি কীভাবে নিজেকে সমস্যার পারফরম্যান্স-ভিত্তিতে পেতে পারেন। উদাহরণস্বরূপ, লিনকিউ এর গণনাটিকে একটি লুপ শর্ত হিসাবে ব্যবহার করা সত্যই সত্যই স্মার্ট নয়।


7

যে IQueryable উভয় গ্রহণ, Expression<Func<T1, T2, T3, ...>>এবং Func<T1, T2, T3, ...>, 2nd ক্ষেত্রে কর্মক্ষমতা অবনতি সম্পর্কে একটি ইঙ্গিতটি প্রদান ছাড়া।

এখানে কোড উদাহরণ রয়েছে যা এটি বোঝায় যে আমি কী বোঝাতে চাইছি:

[TestMethod]
public void QueryComplexityTest()
{
    var users = _dataContext.Users;

    Func<User, bool>                funcSelector =       q => q.UserName.StartsWith("Test");
    Expression<Func<User, bool>>    expressionSelector = q => q.UserName.StartsWith("Test");

    // Returns IEnumerable, and do filtering of data on client-side
    IQueryable<User> func = users.Where(funcSelector).AsQueryable();
    // Returns IQuerible and do filtering of data on server side
    // SELECT ... FROM [dbo].[User] AS [t0] WHERE [t0].[user_name] LIKE @p0
    IQueryable<User> exp = users.Where(expressionSelector);
}

তুমি কি ব্যাখ্যা করতে পারো? আমি অনুসরণ করছি না ...
প্রেটজেল

@ প্রিটজেল আমি কোড উদাহরণ যুক্ত করেছি, যা আমার সমস্যাটি দেখায়।
ভ্যালেরা কলুপাইভ

কোড উদাহরণের জন্য ধন্যবাদ! খুব উপকারী.
মহিষ

6

আমি জানি না যে এটি ভুল বোঝাবুঝির যোগ্য হয়েছে কিনা - তবে আমার জন্য, কেবল অজানা।

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

আরও তথ্যের জন্য এখানে দেখুন: এমএসডিএন: ডেটালয়েডঅ্যাপশন


6

আমি বলব লিনকিউ -র সবচেয়ে ভুল বোঝাবুঝি (বা এটি কি বোঝা উচিত?) দিকটি হ'ল আইকিউয়ারেবল এবং কাস্টম লিনকিউ সরবরাহকারী

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

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

আমি লিনকিউ-র সেই দিকটি বোঝার অপেক্ষায় রয়েছি ...


6

যেমনটি বেশিরভাগ লোক বলেছিলেন, আমি মনে করি যে সর্বাধিক ভুল বোঝাবুঝি অংশটি ধরে নেওয়া হচ্ছে লিনকিউ টি-এসকিউএল-এর কেবলমাত্র একটি প্রতিস্থাপন। আমার ম্যানেজার যিনি নিজেকে টিএসকিউএল গুরু হিসাবে বিবেচনা করেন তিনি আমাদের প্রকল্পে লিনকিউ ব্যবহার করতে দেবেন না এবং এমনটি প্রকাশের জন্য এমএসকে ঘৃণা করেন !!!


অনেক লোক এটিকে টিএসকিউএলের প্রতিস্থাপন হিসাবে ব্যবহার করে। তাদের বেশিরভাগই কখনও মৃত্যুদণ্ড কার্যকর করার পরিকল্পনা শুনেনি।
এরিক্ক্যালেন

+1 কারণ আমি আপনার ম্যানেজারের সাথে একমত, কমপক্ষে ইনফারকে কোনও প্রকল্পে লিনকিউকে এসকিউএল করার অনুমতি দেওয়া হয়েছে। অবজেক্টগুলিতে লিনকিউ সম্পূর্ণরূপে অন্য একটি বিষয়।
শে

5

কোয়েরি কার্যকর করা হলে var কী উপস্থাপন করে?

এটা কি iQueryable, iSingleResult, iMultipleResult, অথবা আছে এটা বাস্তবায়ন উপর ভিত্তি করে পরিবর্তন করুন। সি # তে স্ট্যান্ডার্ড স্ট্যাটিক-টাইপ বনাম গতিশীল-টাইপিং (যা প্রদর্শিত হবে তা) ব্যবহার সম্পর্কে কিছু জল্পনা রয়েছে।


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

5

লুপকে বাসা বাঁধাই কত সহজ, এমনটি আমার মনে হয় না যে প্রত্যেকে বোঝে।

উদাহরণ স্বরূপ:

from outerloopitem in outerloopitems
from innerloopitem in outerloopitem.childitems
select outerloopitem, innerloopitem

+1, ছি। এটা বেশ শক্তিশালী।
প্রেটজেল

4

group by এখনও আমার মাথা স্পিন করে তোলে

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


1
আমি খুঁজে পেয়েছি যে মজাদার জন্য অবজেক্টগুলিতে বেশিরভাগ লিনকিউ প্রয়োগ করা সত্যিই সহায়তা করে :) তবে হ্যাঁ, এটি কিছুটা বিভ্রান্তিকর - অবশ্যই যদি আমি কিছুক্ষণের জন্য কোনও লিনকিউ না করি তবে আমাকে স্বাক্ষরগুলিতে ফিরে যেতে হবে have তেমনিভাবে "বনাম" যোগ দিন "প্রায়শই আমাকে পেয়ে যায় ...
জন স্কিটি

4

সংকলিত জিজ্ঞাসা

সত্য যে আপনি পারেন চেন না IQueryable, কারণ তারা পদ্ধতি কল হয় (যখন এখনও অন্য কিছুই কিন্তু এসকিউএল translateable!) এবং যে এটি প্রায় এটা mindboggling ও শুকনো একটি বিশাল লঙ্ঘন সৃষ্টি করে কাজ প্রায় অসম্ভব। IQueryableঅ্যাড-হক এর জন্য আমার আমার দরকার যাতে আমার কাছে প্রশ্নগুলি সংকলন করা হয়নি (আমি কেবল ভারী পরিস্থিতিগুলির জন্য অনুসন্ধানগুলি সঙ্কলন করেছি) তবে সংকলিত প্রশ্নগুলিতে আমি সেগুলি ব্যবহার করতে পারি না এবং পরিবর্তে আবার নিয়মিত কোয়েরি বাক্য গঠন লিখতে হবে। এখন আমি একই জায়গায় ২ টি জায়গায় সাবকিউরিগুলি করছি, কিছু পরিবর্তন হলে এবং উভয়ই আপডেট করতে হবে remember একটি দুঃস্বপ্ন.


4

আমি মনে করি যে লিনকিউ থেকে এসকিউএল সম্পর্কে # 1 টি ভ্রান্ত ধারণাটি হ'ল আপনি এসকিউএলকে এর কার্যকর ব্যবহার করার জন্য জানতে পারবেন ST

লিনক থেকে এসকিএল সম্পর্কে আরেকটি ভুল বোঝাবুঝি জিনিস হ'ল এটি কার্যকর করার জন্য আপনার ডাটাবেস সুরক্ষাটিকে অযৌক্তিকতার বিন্দুতে কমিয়ে আনতে হবে।

তৃতীয় পয়েন্টটি হ'ল ডায়নামিক ক্লাসগুলির সাথে লিনক থেকে এসকিএল ব্যবহার করা (অর্থাত ক্লাসের সংজ্ঞা রানটাইম সময়ে তৈরি করা হয়) কেবলমাত্র ইন-টাইম সংকলনের বিশাল পরিমাণ তৈরি করে। যা একেবারে পারফরম্যান্সকে মেরে ফেলতে পারে।


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


2

উল্লিখিত হিসাবে, অলস লোডিং এবং মুলতুবি কার্যকর

কীভাবে লিনিকিউ থেকে অবজেক্টস এবং লিনকডু থেকে এক্সএমএল (আইনিউবারেবল) লিনকুই থেকে এসকিউএল (আইকুয়েরেবল) থেকে আলাদা

কেমন সব স্তরগুলির একটি ডেটা অ্যাক্সেস লেয়ার, বিজনেস লেয়ার এবং LINQ সঙ্গে উপস্থাপনা লেয়ার তৈরী করতে .... এবং একটি ভাল উদাহরণ।


প্রথম দুটি আমি করতে পারি। আমি "
ত্রুটি করে

+1, যতক্ষণ না আপনি এটি নির্দেশ করেছেন, আমি বুঝতে পারি নি যে লিনকু-টু-অবজেক্টস এবং লিনকু-টু-এক্সএমএল আইকিউয়েরেবল হিসাবে লিনিক-টু-এসকিউএল-এর বিপরীতে অনুমেয় ছিল, তবে তা বোঝা যায়। ধন্যবাদ!
প্রেটজেল

2

যেমনটি বেশিরভাগ লোক বলেছিলেন, আমি মনে করি যে সর্বাধিক ভুল বোঝাবুঝি অংশটি ধরে নেওয়া হচ্ছে লিনকিউ টি-এসকিউএল-এর কেবলমাত্র একটি প্রতিস্থাপন। আমার ম্যানেজার যিনি নিজেকে টিএসকিউএল গুরু হিসাবে বিবেচনা করে সে আমাদের প্রকল্পে লিনকুই ব্যবহার করতে দেয় না এবং এমনটি প্রকাশের জন্য এমএসকে ঘৃণা করে !!!


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