PDA

View Full Version : مبتدی: کدی برای تشخیص خالی بودن table در روش linq to sql



dokhtare7darya
شنبه 08 تیر 1392, 16:23 عصر
من میخواستم بدونم چطوری میشه تشخیص داد که توی table هیچ رکوردی ذخیره نشده و اگر اون table خالی بود یک باتن غیر فعال بشه

ashkan1234
شنبه 08 تیر 1392, 16:40 عصر
سلام!
شما تیبلت رو لیست کن بریز توی متغییر بعد اون متغییر رو بشمار!
اینطوری: using (var db = new SQLTOLINQDataContext())
{
var counter = db.TBLName.ToList();
if (counter.Count == 0)
{
//شرط شما
}
}

bazikadeh
شنبه 08 تیر 1392, 16:44 عصر
int b;
var db = new LINQDataContext()
b = db.Mytables.Count();
if (b > 0)
MessageBox.Show("Hast");
else
MessageBox.Show("Nist");


البته به روش ساده گفتم واستون

13601360
شنبه 08 تیر 1392, 17:17 عصر
این مقاله از آقای نصیری با عنوان "Count یا Any" رو ببینید
http://www.dotnettips.info/post/472/count-%DB%8C%D8%A7-any

Mahmoud.Afrad
شنبه 08 تیر 1392, 17:17 عصر
شما تیبلت رو لیست کن بریز توی متغییر بعد اون متغییر رو بشمار!

اصلا لیست نکنید. لیست کردن همه داده ها رو به رم منتقل میکنه. به فکر حافظه هم باشید.

ashkan1234
شنبه 08 تیر 1392, 17:32 عصر
اصلا لیست نکنید. لیست کردن همه داده ها رو به رم منتقل میکنه. به فکر حافظه هم باشید.

using رو واسه همین نوشتم!:لبخند:
الیته اینجا لیست هم نکنیم جواب میده!

Mahmoud.Afrad
شنبه 08 تیر 1392, 17:36 عصر
using رو واسه همین نوشتم!:لبخند:
الیته اینجا لیست هم نکنیم جواب میده!
using بکنید یا نکنید هیچ ربطی به var counter = db.TBLName.ToList(); نداره. با Tolist داده ها از هارد به رم منتقل میشه. متغیر که با Tolist و Toarray مقدار بگیره مستقل از منبع داده(db) خواهد بود.

ashkan1234
شنبه 08 تیر 1392, 17:39 عصر
using بکنید یا نکنید هیچ ربطی به var counter = db.TBLName.ToList(); نداره. با Tolist داده ها از هارد با رم منتقل میشه.
:گیج:
واقعا؟!چجوری میشه که اینجوری میشه؟:لبخند:

ashkan1234
شنبه 08 تیر 1392, 17:54 عصر
واقعا برام جالب شد!
using بعد اینکه کارش رو کرد میاد حافظه اشغال شده رو آزاد میکنه!تا اینجا درسته؟
چجوری ربطی نداره؟!
چرا از هارد به رم انتقال میده!
و اینکه بلاخره خیلی جاها لازمه حتما لیست بشن داده ها(مثلا تو گزارش گیری ها)
لطفا بیشتر توضیج بدبد!
3 پاس گدازم!:لبخند:

Mahmoud.Afrad
شنبه 08 تیر 1392, 18:16 عصر
باید با توجه به سوال تاپیک بحث رو پیش ببریم. برای گزارش گیری حتما قبلش یه فیلتری روی کوئری اعمال میشه و حجم داده ها به مراتب کمتر از کل داده های جدول هست.
باید ببینید using روی چه شئ ای اعمال میشه. در کد شما روی db تاثیر داره. و البته نکته اصلی رو شما نگرفتی ، اینکه گفتم tolist باعث ایجاد یه منبع داده مجزا میشه و با اجرای var counter = db.TBLName.ToList(); همه داده های جدول به رم منتقل میشه. اما توجه کنید که برای چه کاری قراره کوئری بزنید. سوال اینه که خالی بودن جدول چک بشه. اینکار رو با Count میتونید انجام بدید البته بدون tolist کردن ، همونطور که bazikadeh (http://barnamenevis.org/member.php?229893-bazikadeh) نوشتند.
برای اینکار نیازی به لود داده ها در رم نیست. با کوئری که به sql ترجمه و سمت sqlserver اجرا میشه میتونید به راحتی انجام بدید.
البته بهینه ترین روش استفاده از Any هست:

if (db.tbl.Any())
{
MessageBox.Show("There are some rows in the table");
}
else
{
MessageBox.Show("Table is empty");
}