PDA

View Full Version : مشکل در فیلتر کردن اطلاعات دیتا گرید، توسط LINQ



uniqueboy_ara
سه شنبه 18 بهمن 1390, 10:29 صبح
سلام دوستان
توی TSQL با استفاده از Like میشد اطلاعات رو حرف به حرف فیلتر کرد، توی LINQ معادل LIKE چی هستش؟؟؟

------------
از این استفاده کردم ولی واسه ورودی int جواب نمیده!!!
var query = from p in students.detail where p.studentNumber.startWith(X) select p;

amir3321
چهارشنبه 19 بهمن 1390, 08:09 صبح
در linq شما می تونی از contains استفاده کنی همانند like عمل می کنه مانند زیر که بجای x می تونی رشته یا یک حرف رو قرار بدی و با این کار میره تمامی studentnumber های که دارای x باشند رو بر می گردونه

var query = from p in students.detail where p.studentNumber.contains("X") select p

uniqueboy_ara
چهارشنبه 19 بهمن 1390, 09:25 صبح
مشکل اینجاست که این کد زمانی جواب میده که StudentNumber از نوع int نباشه!

amir3321
چهارشنبه 19 بهمن 1390, 11:31 صبح
یک روشی من از استاد gwbasic یاد گرفتم که بعدا متوجه شدم می تونه همه فیلد ها رو بصورت string چک می کنه مثل زیر

var query = query.AsQueryable().Where(c => c.GetType().GetProperty("studentnumber").GetValue(c, null).ToString().ToLower().Contains("x")) .ToList();

raziee
دوشنبه 24 بهمن 1390, 09:16 صبح
سلام دوستان
توی TSQL با استفاده از Like میشد اطلاعات رو حرف به حرف فیلتر کرد، توی LINQ معادل LIKE چی هستش؟؟؟

------------
از این استفاده کردم ولی واسه ورودی int جواب نمیده!!!
var query = from p in students.detail where p.studentNumber.startWith(X) select p;
با سلام.
زمانی که شما میخواهید لیستی از داده ها رو که دارای مقداری از یک لیست دیگه هستند به شکل زیر عمل کنید.

int[] ids = new int[] { 1, 2, 3, 4, 5 };
var items = db.Users.Where(x => ids.Contains(x.Id));

در کد بالا کابرانی که Id اونها در لیست ids وجود داشته باشه واکشی خواهند شد.
این روش برای هر DataType ای قابل استفاده است.