مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

mohammad100

عضویت از 1392/08/27

ایجاد فیلتر در دستور select در linq

  • یکشنبه 1 آذر 1394
  • 09:43
تشکر میکنم

با سلام خدمت دوستان .

چگونه در دستور 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;

 

پاسخ های این پرسش

تعداد پاسخ ها : 7 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 1 آذر 1394
  • 12:35

منظورتون رو متوجه نشدم

در کوئری شرط ها برقرار شده

مشکل کجاست ؟

کاربر سایت

mohammad100

عضویت از 1392/08/27

  • یکشنبه 1 آذر 1394
  • 12:44

در کوئری linq  اگر bookname خالی بود در کوئری اعمال نشود . مثل کوئری ado.net که نوشتم

کاربر سایت

mohammad100

عضویت از 1392/08/27

  • یکشنبه 1 آذر 1394
  • 12:47

من این کوئری رو در بخشی از سایت که جستجوی پیشرفته داره می خوام .

اگر کاربر نام کتاب را وارد کرد ولی نام نویسنده رو وارد نکرد کوئری به درستی کار کنه.

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 1 آذر 1394
  • 13:54

میتونید از if استفاده کنید و یا کوئری رو به صورت داینامیک یا همان T-Sql بسازید و توسط Entity اجرا کنید

مثال زیز

db.SqlQuery("Select * From Person");

 

کاربر سایت

mohammad100

عضویت از 1392/08/27

  • یکشنبه 1 آذر 1394
  • 14:16

من کد زیر رو نوشتم ولی شرط ها بصورت 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);
        }

 

کاربر سایت

mohammad100

عضویت از 1392/08/27

  • یکشنبه 1 آذر 1394
  • 17:39

برای اجرا 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;

 

کاربر سایت

f.mirshekar

عضویت از 1393/07/22

  • پنجشنبه 5 آذر 1394
  • 20:31

سلام آقا محمد

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 { }

 

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)