PDA

View Full Version : مشکل در تبدیل رشته به عدد هنگام جستجو در دیتابیس



samiasoft
سه شنبه 12 شهریور 1398, 17:02 عصر
سلام نمیدانم آیا در این باره در انجمن تابحال بحث شده یا خیر ...چون با جستجو موردی پیدانکردم

یکی از ستون های جدول دیتابیسم بصورت nvarchar(5) هستش و همیشه مقدار عددی میگیره.

میخواستم هنگام لود کردن در دیتاگرید شرطی بزارم که برای مثال رکورد هایی که این ستونش حداکثر مقدارش 100 باشه رو پیداکنه ...اومدم اینطور نوشتم :

int zirbana=100;



var search = (from rows in database.Tbl_Apartments

where Convert.ToInt32(rows.zirBana.ToString()) <= zirbana


select new
{
rows.id_Apartment,
rows.sellerName,
rows.foroshi,
rows.zirBana,

}).ToList();

در این حالت با خطای زیر مواجه میشوم :

LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression



ممنون میشوم راهنمایی کنید.
ناگفته نماند برای ارتباط با دیتابیسی از انتیتی فریمورک استفاده کردم.

این صفحه رو مطالعه کردم اما متوجه نشدم !
https://stackoverflow.com/questions/5754218/convert-string-to-int-in-ef-4-0


جز اینکه بیام اون ستون را از نوع int درنظر بگیریم آیا راهی نداره؟

ROSTAM2
چهارشنبه 13 شهریور 1398, 08:34 صبح
سلام توی سی شارپ تابع Val نداریم مگه؟! رشته رو به نوع double تغییر می ده و خطایی در کار نیست !

Shadow_net
چهارشنبه 13 شهریور 1398, 12:56 عصر
بعضی مواقع لینک و انتیتی با convert مشکل پیدا میکنن
توصیه میکنم convert رو قبل search بنویسید

farhad_shiri_ex
چهارشنبه 13 شهریور 1398, 15:25 عصر
سلام نمیدانم آیا در این باره در انجمن تابحال بحث شده یا خیر ...چون با جستجو موردی پیدانکردم

یکی از ستون های جدول دیتابیسم بصورت nvarchar(5) هستش و همیشه مقدار عددی میگیره.

میخواستم هنگام لود کردن در دیتاگرید شرطی بزارم که برای مثال رکورد هایی که این ستونش حداکثر مقدارش 100 باشه رو پیداکنه ...اومدم اینطور نوشتم :

int zirbana=100;



var search = (from rows in database.Tbl_Apartments

where Convert.ToInt32(rows.zirBana.ToString()) <= zirbana


select new
{
rows.id_Apartment,
rows.sellerName,
rows.foroshi,
rows.zirBana,

}).ToList();

در این حالت با خطای زیر مواجه میشوم :
LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression



ممنون میشوم راهنمایی کنید.
ناگفته نماند برای ارتباط با دیتابیسی از انتیتی فریمورک استفاده کردم.

این صفحه رو مطالعه کردم اما متوجه نشدم !
https://stackoverflow.com/questions/5754218/convert-string-to-int-in-ef-4-0


جز اینکه بیام اون ستون را از نوع int درنظر بگیریم آیا راهی نداره؟

با سلام
این راه را هم امتحان کنید...

int zirbana=100;


var search = (from rows in database.Tbl_Apartments

where cast(rows.zirBana as Edm.Int32) <= zirbana
select new
{
rows.id_Apartment,
rows.sellerName,
rows.foroshi,
rows.zirBana,

}).ToList();

البته من با نوع nvarchar تست نکردم چون که cast با primitive types کار میکنه!