PDA

View Full Version : سوال: معادل این قطعه کد زیر در linq



abyar_fm
شنبه 25 شهریور 1391, 19:42 عصر
سلام دوستان J
من چهارتا فیلد درفرمم دارم که میخوام جستجوی پیشرفته(ترکیبی با چهار فیلد) رو با استفاده از دستور likeدر linq انجام بدم.بلوک کدی که در روش ADO داشتم این بود


string sql;
sql = " SELECT id_bimar ,name ,family , name_pedar, code_melli,tarikhe_tavalod ,name_bime ,
shomare_daftarche" +
" , tarikh_paziresh,bimary_khas,telephon ,adress" +
" FROM vw_paziresh where ";


if (txt_codeparvande.Text != string.Empty)
sql = sql + "id_bimar like N'" + txt_codeparvande.Text + "%' and ";
if (txt_name.Text != string.Empty)
sql = sql + "name like N'" + txt_name.Text.Trim() + "' and ";
if (txt_family.Text != string.Empty)
sql = sql + "family like N'" + txt_family.Text.Trim() + "%' and ";
if (txt_telephne.Text != string.Empty)
sql = sql + "telephon like N'" + txt_telephne.Text + "%' and ";
sql = sql + " 1=1 ";


con = new SqlConnection(constring());
com = new SqlCommand(sql, con);
if (con.State == ConnectionState.Closed)
con.Open();
com.ExecuteNonQuery();
da = new SqlDataAdapter(sql, con);
ds = new DataSet();
da.Fill(ds, "bimar");
dataGridView1.DataBindings.Clear();
dataGridView1.DataBindings.Add(new Binding("DataSource", ds, "bimar"));
con.Close();


حالا میخوام این دستور با متد StartWith() بنویسم نمیدونم باید چطور از این متد استفاده کنم.هرطور مینویسم error میده

abyar_fm
دوشنبه 27 شهریور 1391, 14:38 عصر
سلام لطفا اگه کسی میدونه این سوال رو پاسخ بده.
مدیران محترم این قسمت چرا پاسخی به سوالات نمیدن؟

masoud_z_65
دوشنبه 27 شهریور 1391, 14:50 عصر
دوست عزیز از قطعه کد زیر الهام بگیر به کارت میاد:



var query = from letter in session.Linq<Letter>()
where
letter.Sec.ID == currentSec.ID &&
((letter.LetterType == LetterType.Incoming &&
//(letter.RegisterDate >= fromDate && letter.RegisterDate <= toDate))
(letter.Date >= fromDate && letter.Date <= toDate))
||
(letter.LetterType != LetterType.Incoming &&
(letter.Date >= fromDate && letter.Date <= toDate)))
select letter;

if (subject != null)
query = query.Where(letter => letter.LetterInformation.Subject.Contains(subject) );

if (keywords != null)
query = query.Where(letter => letter.LetterInformation.Keywords.Contains(keyword s));

if (senderOrganizationSearch != null)
query = query.Where(letter => letter.Sender.Organization.Name.Contains(senderOrg anizationSearch.Trim()));

if (senderRoleSearch != null)
query = query.Where(letter => letter.Sender.Role.Contains(senderRoleSearch.Trim( )));

if (serialNumberSearch != null)
query = query.Where(letter => letter.SerialNumber == serialNumberSearch);

if (originalNumberSearch != null)
query = query.Where(letter => letter.OriginalNumber.Contains(originalNumberSearc h));

if (preNumberSearch != null)
query = query.Where(letter => letter.PreNumber.ID == Convert.ToInt64(preNumberSearch));

if (letterTypeSearch != null)
query = query.Where(letter => letter.LetterType == (LetterType)Enum.Parse(typeof(LetterType), letterTypeSearch));

if (transportType != null)
query = query.Where(letter => letter.TransportType == (TransportType)Enum.Parse(typeof(TransportType), transportType));

if (securityLevelSearch != null)
query = query.Where(letter => letter.SecurityLevel == (SecurityLevel)Enum.Parse(typeof(SecurityLevel), securityLevelSearch));

if (importanceSearch != null)
query = query.Where(letter => letter.Importance == (Importance)Enum.Parse(typeof(Importance), importanceSearch));

if (archive != null)
query = query.Where(letter => letter.Archive.ID == Convert.ToInt64(archive));

masoud_z_65
دوشنبه 27 شهریور 1391, 14:51 عصر
جای خاصیشو خواستی بگو تا توضیح بدم اما خیلی واضحه

mohammadkord
پنج شنبه 26 دی 1392, 14:27 عصر
سلام من یه کد در linq می خواستم که نذاره مقداره تکراری وارد شه