با سلام خدمت دوستان .
چگونه در دستور select زیر فیلتر ایجاد کنم یعنی اگر bookName و bookwriter مقدار داشتند اعمال شوند .
var db = new dbclassDataContext(); var book = from b in db.Tbl_Book where b.bookname==bookname.value() && b.bookwriter==bookwriter.value() select b;
که در Ado.net بصورت زیر نوشته میشه :
string sqltxt = "select * from Tbl_Book where 1=1"; if (bookname.value != "") sqltxt += " and name=" + "'" + bookname.value + "'"; if (bookwriter.value != "") sqltxt += " and writer=" + "'" + bookwriter.value + "'"; ....... ....... ad.SelectCommand.CommandText = sqltxt;
منظورتون رو متوجه نشدم
در کوئری شرط ها برقرار شده
مشکل کجاست ؟
در کوئری linq اگر bookname خالی بود در کوئری اعمال نشود . مثل کوئری ado.net که نوشتم
من این کوئری رو در بخشی از سایت که جستجوی پیشرفته داره می خوام .
اگر کاربر نام کتاب را وارد کرد ولی نام نویسنده رو وارد نکرد کوئری به درستی کار کنه.
میتونید از if استفاده کنید و یا کوئری رو به صورت داینامیک یا همان T-Sql بسازید و توسط Entity اجرا کنید
مثال زیز
db.SqlQuery("Select * From Person");
من کد زیر رو نوشتم ولی شرط ها بصورت or اجرا میشه می خوام بصورت and اجرا بشه باید چطوری بنویسم
var db = new dbclassDataContext(); var book = from b in db.Tbl_Book where b.bookname == bookname.value() && b.bookwriter == bookwriter.value() select b; if(bookname.value!="") { book = book.where(b => b.bookname == bookname.value); } if(bookwriter.value!="") { book = book.where(book => book.bookwriter == bookwrite.value); }
برای اجرا and باید دستور زیر رو بنویسیم :
var db = new dbclassDataContext(); var book = from b in Tbl_Book where (bookname.value != "" ? b.bookname == bookname.value : true) && (bookwriter.value != "" ? b.bookwriter == bookwriter.value : true) select b;
سلام آقا محمد
var query = linq.Customer_Tbls.Where(name => (name.C_Name.Equals(txtname.Value) || name.c_Family.Equals(txtfamily.Value))); try { if (query != null) { grid1.DataSource = query; grid1.DataBind(); } } catch { }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)