View Full Version : سوال: جستجو در دیتابیس و مقدار Null
r0ot$harp
جمعه 10 دی 1389, 01:33 صبح
سلام دوستان .
من یه برنامه دارم که فرمی داره برای جستجو در داخل مشترکین .
جستجو براساس چندین پارامتر (نام - کد اشتراک - تلفن ) انجام می شه .
محتوای جدول مشترکین در دیتابیس شمال ID (int) و ... می باشد .
حالا مشکل اینجاست که وقتی براساس کد اشتراک جستجو می کنم مقدار اگر Null باشه برنامه اررور می ده و در ضمن وقتی هیچ مقداری نمی دی تمام مشترکین رو نمایش نمی ده .
کد بنده :
var Query = (from T in bank.tbl_customers
where T.ID == Convert.ToInt32(Txt_Customer_Search.Text)
select T);
dataGridView1.DataSource = Query;
باتشکر احسان
DrTJ2066
جمعه 10 دی 1389, 03:28 صبح
باید از DefaultIfEmpty استفاده کنی:
var res = (from T in Customers
where T.ID == Convert.ToInt32(Txt_Customer_Search.Text)
select T).DefaultIfEmpty(new Customer{ ID=-1, Name="", Family=""});
یا اینکه موقع ست کردن DataSource کنترل کنی:
dataGridView1.DataSource = Query ?? bank.Customer.NewCustomerRow();
r0ot$harp
شنبه 11 دی 1389, 01:35 صبح
باید از DefaultIfEmpty استفاده کنی:
var res = (from T in Customers
where T.ID == Convert.ToInt32(Txt_Customer_Search.Text)
select T).DefaultIfEmpty(new Customer{ ID=-1, Name="", Family=""});
یا اینکه موقع ست کردن DataSource کنترل کنی:
dataGridView1.DataSource = Query ?? bank.Customer.NewCustomerRow();
سلام دوستان عزیز .
تشکر می کنم دوست عزیز بابت پاسختون .
کد استفاده شده :
var res = (from T in bank.tbl_customers
where T.ID == Convert.ToInt32(Txt_Customer_Search.Text)
select T).DefaultIfEmpty(new tbl_customer {ID=-1 });
dataGridView1.DataSource = res;
اررور دریافت شده :
Unsupported overload used for query operator 'DefaultIfEmpty'.
باتشکر احسان
r0ot$harp
یک شنبه 12 دی 1389, 20:13 عصر
دوستان سلام . کسی نیست پاسخ بنده رو بده ؟؟؟ واقعا گیر کردم .
باتشکر احسان
r0ot$harp
یک شنبه 12 دی 1389, 21:33 عصر
دوستان با تشکر .
جواب رو پیدا کردم .
باید فیلد Int رو به String تبدیل کنید .
شما در دیتابیس فیلد ID از نوع Int هست .
در برنامه اینطوری می شه .
var Query = from T in bank.tbl_customers
where SqlMethods.Like(T.ID.ToString(),Txt_Customer_Searc h.Text + "%")
select T;
dataGridView1.DataSource = Query;
که تنها فرق این کد با کد اول تو اینه که ID به T.ID.ToString() تبدیل شده و از SqlMethods.Like استفاده شده .
دوستان برای استفاده از SqlMethods.Like باید NameSpace زیر رو به برنامه اضافه کنید :
using System.Data.Linq.SqlClient;
باتشکر احسان
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.