دستور فیلتر به روش Entity Framework
با سلام
فیلتر در EF به روش زیر انجام میشه.(کد زیر فیلتر بر اساس نام هست)
var qsreach = db.members.Where(i => i.membername.Contains( textBox1.Text);
dataGridView1.DataSource = qsreach.ToList();
مشکل اینجاست که اگر نوع فیلد در جدول از نوع عددی(int) باشه. جواب نمیده و حتماً باید نوع فیلد رشته باشه. من میخوام فیلتر رو بر اساس کدعضویت بدم که از نوع int هست.
چه باید کرد؟
نقل قول: دستور فیلتر به روش Entity Framework
یعنی شما میخواهید contains روی اعداد بزنید؟
نقل قول: دستور فیلتر به روش Entity Framework
نقل قول:
نوشته شده توسط
parvizwpf
یعنی شما میخواهید contains روی اعداد بزنید؟
میخوام معادل این دستور فیلتر رو برای فیلدهای عددی به کار ببرم. (به عبارت ساده تر بر اساس ش عضویت فیلتر کنم).
نقل قول: دستور فیلتر به روش Entity Framework
Contains برای بررسی وجود یک رشته در رشته دیگه استفاده میشه. مثلا رشته Framework مقدار work رو شامل میشه.
کاری که شما میخواین بکنین مقایسه برابر بودن دو عدد هست.ابتدا باید مقدار textbox که به صورت رشته هست رو به عدد تبدیل کنید و با متد Equals یا عملگر == مقایسه رو انجام بدین:
int enteredMemberId;
if (int.TryParse(textBox1.Text, out enteredMemberId)) {
var qsreach = db.members.Where(i => i.memberId.Equals(enteredMemberId));
dataGridView1.DataSource = qsreach.ToList();
}
else {
MessageBox.Show("Invalid member id.");
}
فرض بر این بوده شما ستون عددی با نام memberId دارین.
نقل قول: دستور فیلتر به روش Entity Framework
نقل قول:
نوشته شده توسط
plus
Contains برای بررسی وجود یک رشته در رشته دیگه استفاده میشه. مثلا رشته Framework مقدار work رو شامل میشه.
کاری که شما میخواین بکنین مقایسه برابر بودن دو عدد هست.ابتدا باید مقدار textbox که به صورت رشته هست رو به عدد تبدیل کنید و با متد Equals یا عملگر == مقایسه رو انجام بدین:
int enteredMemberId;
if (int.TryParse(textBox1.Text, out enteredMemberId)) {
var qsreach = db.members.Where(i => i.memberId.Equals(enteredMemberId));
dataGridView1.DataSource = qsreach.ToList();
}
else {
MessageBox.Show("Invalid member id.");
}
فرض بر این بوده شما ستون عددی با نام memberId دارین.
این کد جست و جوی دقیق رو انجام میده. در حالی که من می خوام فیلتر مثل دستور like در sql انجام بشه. یعنی با وارد کردن عدد 1 ، تمامی رکوردهایی که با 1 شروع میشن یا شامل میشه رو برگردونه.
نقل قول: دستور فیلتر به روش Entity Framework
سلام
همونطور که دوستان فرمودند ، Contains روی رشته ها عمل میکنه ، ضمن اینکه عملگر Like توی TSql هم فقط در حالت زیر روی اعداد عمل میکنه که در این شرایط فرقی با عملگر = نداره. (منظور اینه که باید عین عدد جلوی Like قرار بگیره و نمیتونید از% هم استفاده کنید برای اعداد)
SELECT * FROM YourTable WHERE id LIKE 1234
موفق باشید.
نقل قول: دستور فیلتر به روش Entity Framework
درسته. متوجه شدم. از Contains که بگذریم.
یعنی میفرمایید در تکنولوژی Entity Framework تحت هیچ شرایط نمیشه این کار رو انجام داد؟:متفکر:
نقل قول: دستور فیلتر به روش Entity Framework
ازونجایی که Query های نوشته شده به SQL تبدیل میشن، شما باید ابتدا با استفاده از SqlFunctions مقدار عدد مورد نظر رو به رشته تبدیل کنید و بعد از Contains استفاده کنید:
var idString= textBox1.Text;
var qsreach = db.members.Where(i =>SqlFunctions.StringConvert((double)i.memberId).C ontains(idString));
dataGridView1.DataSource = qsreach.ToList();