আমি কীভাবে লিনকিউ ব্যবহার করে ডেটা টেবিল থেকে নামগুলির একটি স্বতন্ত্র, আদেশিত তালিকা পেতে পারি?


104

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

var names =
    (from DataRow dr in dataTable.Rows
    orderby (string)dr["Name"]
    select (string)dr["Name"]).Distinct();

কেন orderbyপ্রয়োগ হয় না?

উত্তর:


37

এটিকে আরও পঠনযোগ্য এবং রক্ষণাবেক্ষণযোগ্য করে তুলতে, আপনি এটিকে একাধিক লিনকিউ বিবৃতিতে ভাগ করতে পারেন।

  1. প্রথমে আপনার ডেটাটিকে একটি নতুন তালিকায় নির্বাচন করুন, আসুন এটিকে কল করুন x1, যদি ইচ্ছা হয় তবে একটি প্রক্ষেপণ করুন
  2. এর পরে, থেকে, একটি স্বতন্ত্র তালিকা তৈরি x1মধ্যে x2প্রয়োজন যাই হোক না কেন পার্থক্য ব্যবহার করে,
  3. অবশেষে, একটি আদেশ তালিকা থেকে তৈরি x2মধ্যে x3যাই হোক না কেন আপনি ইচ্ছা বাছাই

55

সমস্যাটি হ'ল ডিস্টিন্ট অপারেটর মঞ্জুরি দেয় না যে এটি মানগুলির মূল ক্রম বজায় রাখবে।

সুতরাং আপনার ক্যোয়ারিতে এটির মতো কাজ করা দরকার

var names = (from DataRow dr in dataTable.Rows
             select (string)dr["Name"]).Distinct().OrderBy( name => name );



3

নিম্নলিখিত চেষ্টা করুন

var names = (from dr in dataTable.Rows
             select (string)dr["Name"]).Distinct().OrderBy(name => name);

আপনার যা প্রয়োজন তার জন্য এটি কাজ করা উচিত।


2

বিমূর্ত করতে: উত্তরের সমস্তটির মধ্যে কিছু মিল রয়েছে।

অর্ডারবাইয়ের চূড়ান্ত অপারেশন হওয়া দরকার।


2

আপনি এর মতো কিছু ব্যবহার করতে পারেন:

dataTable.Rows.Cast<DataRow>().GroupBy(g => g["Name"]).Select(s => s.First()).OrderBy(o => o["Name"]);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.