View Full Version : مشکل تغییر نامٍ ستونِ Table در LINQ
baidin
پنج شنبه 17 اردیبهشت 1388, 15:40 عصر
با سلام
مشکلی که هست اینه که در JOIN دو تا Table وقتی در هر دو Table ستونی با نام یکسان وجود داشته باشد و اگر بخواهیم در نتیجه Select هر دو ستون از دو جدول را بخواهیم داشته باشیم بایستی یکی از ستون ها را تغییر نام دهیم با استفاده از AS در SQL اما در LINQ دیگر AS جواب نمیده کسی تا حالا با این مشکل برنخورده که به چه صورتی تغییر نام انجام شود
متشکرم
Ali_Mor
جمعه 18 اردیبهشت 1388, 13:48 عصر
معمولا در LINQ نیاز به Join نیست. اما سوال جالبی است. یک روش این است که برای یکی از جداول(بهتر است بگوئیم Entity ها) یک پروپرتی بنویسی که مانند یک پوشش برای ستون هم نام عمل کند.
فرض کن نام ستون همنام Name است. حال در محیط DataContext روی یکی از جداول راست کلیک کن و View Code را بزن تا یک کلاس Partial همنام همان جدول(Entity) ساخته شود و در آنجا این پروپرتی را بنویس:
Public Property Name1() As String
Get
Return Me.Nam
End Get
Set(ByVal value As String)
Me.Name = value
End Set
End Property
حالا میتونی در کوئری از Name1 استفاده کنی.
baidin
جمعه 18 اردیبهشت 1388, 17:35 عصر
معمولا در LINQ نیاز به Join نیست. اما سوال جالبی است. یک روش این است که برای یکی از جداول(بهتر است بگوئیم Entity ها) یک پروپرتی بنویسی که مانند یک پوشش برای ستون هم نام عمل کند.
فرض کن نام ستون همنام Name است. حال در محیط DataContext روی یکی از جداول راست کلیک کن و View Code را بزن تا یک کلاس Partial همنام همان جدول(Entity) ساخته شود و در آنجا این پروپرتی را بنویس:
Public Property Name1() As String
Get
Return Me.Nam
End Get
Set(ByVal value As String)
Me.Name = value
End Set
End Propertyحالا میتونی در کوئری از Name1 استفاده کنی.
دوست عزیز از شما تشکر می کنم اما با پاسخ شما سوالی دیگر به وجود آمد؟
(معمولا در LINQ نیاز به Join نیست.)
اولا چرا ؟ و سوال دیگر این که Left Join را در LINQ به چه صورتی بایستی انجام داد
Ali_Mor
شنبه 19 اردیبهشت 1388, 08:52 صبح
1- به کلمه معمولا دقت کن. اگر اصلا نیاز نبود که امکانش را فراهم نمی کردند.
2- اما چرا معمولا نیاز نیست؟ زیرا Join ها عموما برای ترکیب دو جدول که با یکدیگر relation دارند استفاده می شود. خاصیت محشر لینکیو اینه که این relationها رو به روابط بین کلاسها و براساس قواعد شی گرائی در میاره. مثلا فرض کن دو جدول داریم که بنام های Fard و Payam که رابطه یک به چند بینشون برقراره.(یعنی هر فرد میتونه دارای چند پیام باشه) برای دسترسی به پیام های یک فرد نیازی نیست این دو جدول رو به هم Join کنی، حتی نیازی نیست کلید فرد رو برداری و در جدول پیام ها بدنبال رکوردهائی بگردی که این کلید در اونها وجود داره(بعنوان کلید خارجی). کافیه به شی فرد(یک رکورد از فرد) دسترسی داشته باشی و اونگاه با این خط کد به تمام پیام های اون دسترسی پیدا می کنی
objFard.Payams
اما سوال دوم: MSDN رو فراموش نکن
The following example shows how to achieve a LEFT OUTER JOIN by using DefaultIfEmpty(). The DefaultIfEmpty() method returns null when there is no Order for the Employee.
Dim q = From e In db.Employees() _
Group Join o In db.Orders On e Equals o.Employee Into ords _
= Group _
From o In ords.DefaultIfEmpty() _
Select e.FirstName, e.LastName, Order = o
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.