PDA

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



hmahdavi921
جمعه 21 فروردین 1394, 11:17 صبح
با سلام
در کد زیر دو فیلد به نامهای Table_MyProfiles.state و Table_StateCities.ID_state دارای نوع های یکسان هستند و منطقا ما نباید نیازی به تبدیل دوباره نوع ها داشته باشیم .اما وقتی بدون تبدیل نوع این دستور رو اجرا کنیم خطا میگیره .
آیا linq برای تشخیص هم نوع بودن فیلدها استراتژی یا منطق خاصی داره که به این صورت عمل میکنه؟
یا اینکه در جداول خصوصیت هایی تعریف شده که در این مورد تاثیر میزارن؟
و یا ....
دوستان اگه اطلاعاتی در این مورد دارید راهنمایی بفرمائید.






from Table_MyProfiles in db.Table_MyProfiles
join Table_StateCities in db.Table_StateCities on new { state = (Int16?)Convert.ToInt16(Table_MyProfiles.state) } equals new { state = Table_StateCities.ID_state }
select new {
Table_MyProfiles.username,
Table_MyProfiles.FirstName,
Table_MyProfiles.LastName,
state = (System.Int16?)Table_MyProfiles.state
}

parvizwpf
جمعه 21 فروردین 1394, 11:27 صبح
خطا چی میگه؟ نیازی به تبدیل نیست

hmahdavi921
جمعه 21 فروردین 1394, 11:51 صبح
پیغام خطا :
The type of one of the expressions in the join clause is incorrect. Type inference failed in the call to 'Join'.
تبدیل حتما لازمه چرا ؟ منم نمیدونم

parvizwpf
جمعه 21 فروردین 1394, 12:08 عصر
اینجوری معمولی بنویسید خطا میده ؟ :
on tbl1.State equals tbl2.State
یعنی از نیو استفاده نکنید
مگه نمیگید یکسان هستند پس نیازی به تبدیل نیست

hmahdavi921
جمعه 21 فروردین 1394, 12:17 عصر
بینید ما روی یک پروژه حسابداری بزرگ کار میکنیم که دیتابیسش قدیمیه و یک سرس ایراداتی تو طراحی دیتا بیس وجود داره که الان نمیشه اونارو تغییر داد .بیشتر مشکلات هم از اونجا هستش. و اما در مورد کد : بدون new که اصلا جواب نمیده . تو stack ower flow خوندم به خاطر null نبودن فیلد هستش .یعنی اگه یک فیلد null باشه و دیگری null نباشه باید فیلدی که null نیست رو به این صورت (type?) تبدیل به نوع خودش کنیم .خوب به نظر من این کار غیر منطقیه اما با انجام این کار کوئری درست کار میکنه .داستان چیه ؟؟؟؟؟؟؟؟؟؟؟؟؟؟