PDA

View Full Version : چگونه در linq بین دو جدول join کنیم



bitcob589
دوشنبه 05 فروردین 1392, 10:03 صبح
با سلام
دو جدول وجود دارد که در هر جدول یک فیلد با نام number وجود دارد چگونه می توان join را براساس مقدار یکسان که در دو جدول در فیلد number وجود دارد سلکت کرد(چگونه در linq بین دو جدول join کنیم)

JaVa
دوشنبه 05 فروردین 1392, 11:00 صبح
سلام و درود..

Public Class Form1
Dim Bank As New PersonelEntities

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim query = (From t1
In Bank.tbl
Join t2 In Bank.TBL_Cash
On t1.id Equals t2.id
Select t1.id, t1.fname, t1.lname, t2.cash)
DataGridView1.DataSource = query

End Sub
End Class


این یه مثال هست. اگه مشکلی بود بگید تا بیشتر توضیح بدم.

موفق باشید.

bitcob589
دوشنبه 05 فروردین 1392, 11:18 صبح
کد زیر خطا می دهد چگونه به صورت صحیح بدون خطا می توان اجرا کرد

protected void Button1_Click(object sender, EventArgs e)
{

studentDataClassesDataContext st = new studentDataClassesDataContext();
schoolDataClassesDataContext sc = new schoolDataClassesDataContext();

var madrs = (from dansh in st.ones join prod in sc.twos on dansh.nameid equals prod.schoolid where dansh.codestudent== prod.codestudent select new { dansh.nameid,prod.schoolid });

GridView1.DataSource = madrs;
GridView1.DataBind();
}
خطا زیر می دهد

The query contains references to items defined on a different data context.

JaVa
دوشنبه 05 فروردین 1392, 11:24 صبح
کد زیر خطا می دهد چگونه به صورت صحیح بدون خطا می توان اجرا کرد

خطا رو بذارید

bitcob589
دوشنبه 05 فروردین 1392, 11:25 صبح
خطا رو بذارید
خطا زیر است

The query contains references to items defined on a different data context.
از خط زیر خطا گرفته می شود

GridView1.DataBind();
اگر نیاز است سمپل کد را بگذارم

JaVa
دوشنبه 05 فروردین 1392, 11:43 صبح
.tolist() اینبار اضافه کنید.

Public Class Form1
Dim Bank As New PersonelEntities

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim query = (From t1
In Bank.tbl
Join t2 In Bank.TBL_Cash
On t1.id Equals t2.id
Select t1.id, t1.fname, t1.lname, t2.cash).ToList()
DataGridView1.DataSource = query

End Sub
End Class

که برای شما اینجوری میشه:

protected void Button1_Click(object sender, EventArgs e)
{

studentDataClassesDataContext st = new studentDataClassesDataContext();
schoolDataClassesDataContext sc = new schoolDataClassesDataContext();

var madrs = (from dansh in st.ones join prod in sc.twos on dansh.nameid equals prod.schoolid where dansh.codestudent== prod.codestudent select new { dansh.nameid,prod.schoolid }).ToList();

GridView1.DataSource = madrs;
GridView1.DataBind();
}

ببینید درست میشه یا نه ؟!

bitcob589
دوشنبه 05 فروردین 1392, 11:48 صبح
.tolist() اضافه شد ولی خطا همچنان باقی است

JaVa
دوشنبه 05 فروردین 1392, 12:14 عصر
شما مطمئنید که اون دو تا فیلد با همدیگر مشترکن.؟

آخه از شرایط join کردن دو جدول یک فیلد مشتکرک بین دو جدول هست .

bitcob589
دوشنبه 05 فروردین 1392, 12:34 عصر
در زمانی که کلید مشترک در نظر دارم بین دو جدول برقرار کنم خطای نمایش داده می شود

the cloumns in table 'one' do not match an existing primary key or Unique constraint

JaVa
دوشنبه 05 فروردین 1392, 13:05 عصر
یبار هم از Union استفاده کنید

bitcob589
دوشنبه 05 فروردین 1392, 13:13 عصر
یبار هم از Union استفاده کنید

با Union چگونه join که در پست 3 نوشته شده است بنویسیم

bitcob589
دوشنبه 05 فروردین 1392, 14:59 عصر
شما مطمئنید که اون دو تا فیلد با همدیگر مشترکن.؟

آخه از شرایط join کردن دو جدول یک فیلد مشتکرک بین دو جدول هست .

دو تا فیلد مشترک دارند

لطفا راهنمایی بفرمایید:گریه::گریه::گریه:

Mahmoud.Afrad
دوشنبه 05 فروردین 1392, 20:04 عصر
پیغام خطا داره میگه نمیتونه دو موجودیت از دو مدل رو با هم join کنه. همه جدولها(موجودیت ها) را به یک context اضافه کنید.

bitcob589
دوشنبه 05 فروردین 1392, 22:49 عصر
پیغام خطا داره میگه نمیتونه دو موجودیت از دو مدل رو با هم join کنه. همه جدولها(موجودیت ها) را به یک context اضافه کنید.

چگونه همه جدولها به یک context اضافه شود(کدها در پست 3 نوشته شده است)

bitcob589
چهارشنبه 07 فروردین 1392, 17:38 عصر
پیغام خطا داره میگه نمیتونه دو موجودیت از دو مدل رو با هم join کنه. همه جدولها(موجودیت ها) را به یک context اضافه کنید.

چگونه همه جدولها به یک context اضافه شود(کدها در پست 3 نوشته شده است)


یبار هم از Union استفاده کنید

با Union چگونه join که در پست 3 نوشته شده است می توان پیاده سازی کرد

لطفا راهنمایی بفرمایید:ناراحت:

Mahmoud.Afrad
جمعه 09 فروردین 1392, 07:25 صبح
شما دو مدل به نام های studentDataClassesDataContext و schoolDataClassesDataContext دارید که احتمالا به هر کدوم یک جدول رو اضافه کردید. یکی از این دو مدل رو از پروژه delete کنید. مدل دیگر رو باز کنید و از پنجره server explorer تمام جدول ها را به این مدل اضافه (drag & drop) کنید.

bitcob589
جمعه 09 فروردین 1392, 10:07 صبح
تویحات پست قبل پیاده سازی شد اما در زمان دسترسی به فیلدهای درون جدولها خطاهای زیر نمایش داده می شود

Ambiguity between 'one.nameid' and 'one.nameid'schoolid
Ambiguity between 'two.schoolid' and 'two.schoolid'
کد به صورت زیر است

studentschoolDataClassesDataContext er=new studentschoolDataClassesDataContext();

var madrs = (from dansh in er.ones join school in er.twos on dansh.nameid equals school.schoolid select new { dansh, school });
علت خطا چیست

piroozman
شنبه 10 فروردین 1392, 13:16 عصر
يه راه ساده اين هستش كه ابتدا دستورات خودت رو تو Sql بنويسي تست بگيري اگه جواب دادي با استفاده از برخي نرم افزارها اون رو به لينك تبديل كني و تو نرم افزار خودت به كار ببري. يكي از اين نرم افزار linqer 3 هستش. اگه يه سرچ بزني حتما مي توني پيداش كني

bitcob589
یک شنبه 11 فروردین 1392, 10:36 صبح
يه راه ساده اين هستش كه ابتدا دستورات خودت رو تو Sql بنويسي تست بگيري اگه جواب دادي با استفاده از برخي نرم افزارها اون رو به لينك تبديل كني و تو نرم افزار خودت به كار ببري. يكي از اين نرم افزار linqer 3 هستش. اگه يه سرچ بزني حتما مي توني پيداش كني
linqer امتحان شد ولی join تبدیل به linq تبدیل نشد
لطفا راهنمایی بفرمایید:گریه::گریه::گریه:

bitcob589
چهارشنبه 14 فروردین 1392, 04:20 صبح
اگر امکان دارد یک مثال یا سمپل درباره نحوه join بین دو جدول توضیح نمایید

Mahmoud.Afrad
چهارشنبه 14 فروردین 1392, 17:16 عصر
اینم یه نمونه.
http://uploadtak.com/images/h1363_Join_in_LinqToSQL.rar
بازم مشکلی داشتی پروژه خودتو بزار.

bitcob589
چهارشنبه 14 فروردین 1392, 20:57 عصر
studentDataClassesDataContext و schoolDataClassesDataContext داخل یک کلاس گذاشته شد اما در زمان نوشتن join و به فیلدهای دسترسی وجود ندارد
پروژه به صورت زیر است
102260

Mahmoud.Afrad
چهارشنبه 14 فروردین 1392, 23:18 عصر
به خاطر اینه که کلاسهای همنام وجود داره. (توی چند مدل ، کلاس همنام one و two هست)
برای حلش (همونطور که قبلا هم گفتم) schoolDataClasses و studentDataClasses را کلا delete کن.

bitcob589
پنج شنبه 15 فروردین 1392, 14:13 عصر
آیا دو جدول درون یک کلاس گذاشته شود سرعت خوانده شدن اطلاعات افزایش نمی یابد.