من میخواستم بدونم چطوری میشه تشخیص داد که توی table هیچ رکوردی ذخیره نشده و اگر اون table خالی بود یک باتن غیر فعال بشه
من میخواستم بدونم چطوری میشه تشخیص داد که توی table هیچ رکوردی ذخیره نشده و اگر اون table خالی بود یک باتن غیر فعال بشه
سلام!
شما تیبلت رو لیست کن بریز توی متغییر بعد اون متغییر رو بشمار!
اینطوری:using (var db = new SQLTOLINQDataContext())
{
var counter = db.TBLName.ToList();
if (counter.Count == 0)
{
//شرط شما
}
}
int b;
var db = new LINQDataContext()
b = db.Mytables.Count();
if (b > 0)
MessageBox.Show("Hast");
else
MessageBox.Show("Nist");
البته به روش ساده گفتم واستون
این مقاله از آقای نصیری با عنوان "Count یا Any" رو ببینید
http://www.dotnettips.info/post/472/...B%8C%D8%A7-any
واقعا برام جالب شد!
using بعد اینکه کارش رو کرد میاد حافظه اشغال شده رو آزاد میکنه!تا اینجا درسته؟
چجوری ربطی نداره؟!
چرا از هارد به رم انتقال میده!
و اینکه بلاخره خیلی جاها لازمه حتما لیست بشن داده ها(مثلا تو گزارش گیری ها)
لطفا بیشتر توضیج بدبد!
3 پاس گدازم!
باید با توجه به سوال تاپیک بحث رو پیش ببریم. برای گزارش گیری حتما قبلش یه فیلتری روی کوئری اعمال میشه و حجم داده ها به مراتب کمتر از کل داده های جدول هست.
باید ببینید using روی چه شئ ای اعمال میشه. در کد شما روی db تاثیر داره. و البته نکته اصلی رو شما نگرفتی ، اینکه گفتم tolist باعث ایجاد یه منبع داده مجزا میشه و با اجرای var counter = db.TBLName.ToList(); همه داده های جدول به رم منتقل میشه. اما توجه کنید که برای چه کاری قراره کوئری بزنید. سوال اینه که خالی بودن جدول چک بشه. اینکار رو با Count میتونید انجام بدید البته بدون tolist کردن ، همونطور که bazikadeh نوشتند.
برای اینکار نیازی به لود داده ها در رم نیست. با کوئری که به sql ترجمه و سمت sqlserver اجرا میشه میتونید به راحتی انجام بدید.
البته بهینه ترین روش استفاده از Any هست:
if (db.tbl.Any())
{
MessageBox.Show("There are some rows in the table");
}
else
{
MessageBox.Show("Table is empty");
}