মানটি ডাটাবেলে বিদ্যমান আছে কিনা তা পরীক্ষা করে দেখুন?


92

আমার কাছে দুটি কলামের লেখক এবং বুকনামের সাথে ডেটা টেবিল রয়েছে

আমি যাচাই করতে চাই যে প্রদত্ত স্ট্রিং মান লেখক ডেটা টেবেলে ইতিমধ্যে উপস্থিত রয়েছে। এটি পরীক্ষা করার জন্য কি পদ্ধতিতে অন্তর্নিহিত রয়েছে, অ্যারের মতো array.contains?


8
লিনকু? table.Any(t => t.Author == author);
ডেভিও

উত্তর:


206

আপনি এর LINQ-to-DataSetসাথে ব্যবহার করতে পারেন Enumerable.Any:

String author = "John Grisham";
bool contains = tbl.AsEnumerable().Any(row => author == row.Field<String>("Author"));

আর একটি পদ্ধতির ব্যবহার হ'ল DataTable.Select:

DataRow[] foundAuthors = tbl.Select("Author = '" + searchAuthor + "'");
if(foundAuthors.Length != 0)
{
    // do something...
}

প্রশ্ন: আমরা যদি কলামগুলি PEPSIশিরোনামগুলি না জানি এবং আমরা কোনও সারি কলামে কোনও সেল মান বিদ্যমান কিনা তা খুঁজে পেতে চাই ? আমি এটি অনুসন্ধান করতে সমস্ত লুপ করতে পারি তবে এর চেয়ে ভাল উপায় আর কি আছে? -

হ্যাঁ, আপনি এই ক্যোয়ারীটি ব্যবহার করতে পারেন:

DataColumn[] columns = tbl.Columns.Cast<DataColumn>().ToArray();
bool anyFieldContainsPepsi = tbl.AsEnumerable()
    .Any(row => columns.Any(col => row[col].ToString() == "PEPSI"));

এগুলিকে System.Data.DataSetExtensionsরেফারেন্সে এবং using System.Linq;ক্লাস ব্যবহার করতে যুক্ত করুন
5377037

দুটি সমাধানের মধ্যে কোনটি দ্রুত হবে?
পল আলেকজান্ডার

4
@ পল অ্যালেক্সান্ডার: বড় পার্থক্য নেই। তবে পুরানো DataTable.Selectবাক্য গঠনটি সীমিত যেখানে লিনিক্যু সম্পূর্ণ .NET ফ্রেমওয়ার্ক বা কাস্টম পদ্ধতি ব্যবহার করতে পারে। কেবলমাত্র যদি আপনি। নেট 2 এ আটকে থাকেন তবে আপনার ব্যবহার করা উচিত DataTable.Select, অন্যথায় আমি সর্বদা
লিনকিউকে

আপনি যদি পারফরম্যান্সের বিষয়ে যত্নশীল হন এবং বড় ডেটাসেট tbl.Select()থাকে তবে অন্যান্য পদ্ধতির চেয়ে নাটকীয়ভাবে দ্রুত।
HerrimanCoder

@ টিমশ্মেলটার - গ্রেট টিম। তবে যদি ব্যবহারকারী কলামের নামটি না জানেন তবে এখনও সমস্ত সারি পেতে চান যা অনুসন্ধান মানের সাথে মিলে যায় তবে কীভাবে এটি করা যায়?
চন্দন কুমার

13

আপনি লিনক ব্যবহার করতে পারেন। কিছুটা এইরকম:

bool exists = dt.AsEnumerable().Where(c => c.Field<string>("Author").Equals("your lookup value")).Count() > 0;

8
DataRow rw = table.AsEnumerable().FirstOrDefault(tt => tt.Field<string>("Author") == "Name");
if (rw != null)
{
// row exists
}

আপনার ব্যবহারের ধারাটিতে যুক্ত করুন:

using System.Linq;

এবং যোগ কর :

সিস্টেম.ডাটা.ডাটাসেট এক্সটেনশনস

রেফারেন্স।


5

আপনার ডেটা টেবিল ব্যবহার করতে সক্ষম হওয়া উচিত e নির্বাচন করুন () পদ্ধতিটি। আপনি এটি আমাদের এটি করতে পারেন।

if(myDataTable.Select("Author = '" + AuthorName.Replace("'","''") + '").Length > 0)
    ...

সিলেক্ট () ফানসিটন যেখানে স্টেটমেন্টের সাথে মেলে ফলাফলের জন্য ডেটারোজের একটি অ্যারে প্রদান করে।


0

আপনি ডাটাবেসটিকে আইনম্বেবল হিসাবে সেট করতে এবং মানগুলি বিদ্যমান কিনা তা পরীক্ষা করতে লিনক ব্যবহার করতে পারেন। এই লিঙ্কটি দেখুন

লিনকিউ ডেটাবেটে অন রেকর্ড রয়েছে কিনা তা পরীক্ষা করে দেখুন

প্রদত্ত উদাহরণটি হ'ল

var dataRowQuery= myDataTable.AsEnumerable().Where(row => ...

আপনি যে কোনও সাথে পরিপূরক করতে পারেন

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