PDA

View Full Version : دستور distinc در linq



alibabaei2
یک شنبه 09 مهر 1391, 23:20 عصر
با سلام
دستور distinc در sql رو چطور می تونم با linq پیاده سازی کنم
می خوام اطلاعات چند تا جدول که با هم join شده اند رو بر حسب یک فیلد عمل distinc انجام بشه

bahareh1368
یک شنبه 09 مهر 1391, 23:49 عصر
با سلام
دستور distinc در sql رو چطور می تونم با linq پیاده سازی کنم
می خوام اطلاعات چند تا جدول که با هم join شده اند رو بر حسب یک فیلد عمل distinc انجام بشه

اینطوری باید بنویسی :

var s = (from p in operatorList select p.OperatorType).Distinct();

alibabaei2
دوشنبه 10 مهر 1391, 02:03 صبح
ببینید می خوام بر اساس یک فیلد خاص distinc بشه
مثلا دوتا جدول رو join کردم حالا می خوام بر اساس Primary Key یکی از جداول distinc انجام شه

hramezani
دوشنبه 10 مهر 1391, 11:06 صبح
ببینید می خوام بر اساس یک فیلد خاص distinc بشه
مثلا دوتا جدول رو join کردم حالا می خوام بر اساس Primary Key یکی از جداول distinc انجام شه
سلام
ممكنه معادله دستور TSQL رو بگين؟

hamid_kha
دوشنبه 10 مهر 1391, 12:22 عصر
سلام
باید از group استفاده کنی - به این مثاله دقت کن سوالی بود در خدمتم.


protected void dsArtists_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
e.Result = (from o in DataContext.Context.Orders
join p in DataContext.Context.PaymentLogs on o.OrderID equals p.OrderID
join s in DataContext.Context.States on o.StateID equals s.StateID
join u in DataContext.Context.Users on new { o.ArtistID, Column1 = o.ArtistID } equals new { ArtistID = u.UserID, Column1 = u.UserID }
join d in DataContext.Context.Designs on o.DesignID equals d.DesignID

where (شرطهایمان)
orderby u.Username
group new { users = u, designs = d } by new
{
o.ArtistID,
u.Username,
u.CardNumber
} into g
select new
{
g.Key.CardNumber,
g.Key.ArtistID,
g.Key.Username,

jame = (Int32?)g.Sum(p => p.designs.DesignPrice)
}).ToList().Distinct();
}

:چشمک:

alibabaei2
دوشنبه 10 مهر 1391, 16:40 عصر
سلام
باید از group استفاده کنی - به این مثاله دقت کن سوالی بود در خدمتم.


protected void dsArtists_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
e.Result = (from o in DataContext.Context.Orders
join p in DataContext.Context.PaymentLogs on o.OrderID equals p.OrderID
join s in DataContext.Context.States on o.StateID equals s.StateID
join u in DataContext.Context.Users on new { o.ArtistID, Column1 = o.ArtistID } equals new { ArtistID = u.UserID, Column1 = u.UserID }
join d in DataContext.Context.Designs on o.DesignID equals d.DesignID

where (شرطهایمان)
orderby u.Username
group new { users = u, designs = d } by new
{
o.ArtistID,
u.Username,
u.CardNumber
} into g
select new
{
g.Key.CardNumber,
g.Key.ArtistID,
g.Key.Username,

jame = (Int32?)g.Sum(p => p.designs.DesignPrice)
}).ToList().Distinct();
}

:چشمک:

سلام، ممنون از پاسختون
من متوجه نمی شم قسمت group داره چه کاری می کنه
این قسمت group new { users = u, designs = d } by new
{
o.ArtistID,
u.Username,
u.CardNumber
} into g

و همینطور این قسمت
jame = (Int32?)g.Sum(p => p.designs.DesignPrice)

ممنون می شم توضیح بدید

hamid_kha
سه شنبه 11 مهر 1391, 18:36 عصر
سلام دوست عزیز

در رابطه با قسمت اول:
بر اساس فیلدهای مربوطه گروه بندی میشه فقط باید توجه کرد که فیلدهایی که در قسمت group میاریم باید قسمت select هم بیاوریم- در واقع با این کار یه گروه بندی جدید میسازیم و براساس این select هامون رو انجام میدیم.

در رابطه با قسمت دوم:
تک تک مقادیر مربوط به فیلدDesignPrice از جدول Designs رو میایم جمع میکنیم و یه نوعی براش در نظر میگیریم و توی یه متغیر به نام jame میریزیم- همین
:خجالت:
امیدوارم متوجه شده باشید:چشمک: