PDA

View Full Version : سوال: معادل دستور sql



damanpak
سه شنبه 19 دی 1391, 00:23 صبح
سلام به همه
دوستان عزیز معادل دستور Sql زیر در Linq چیست؟

select ids,sum(const)from mytbl group by ids

damanpak
سه شنبه 19 دی 1391, 10:09 صبح
سلام به همه
20تا مشاهده اما دریغ از جواب
خودم جوابشو پیدا کردم

(From t In mytbls _
Group t By t.Ids Into g = Group _
Select _
Ids, _
Column1 = CType(g.Sum(Function(p) p.Mb),Int32?)) _
.Distinct()
البته این معادلسازی واسه vb بود
بهرحال اگه کسی توی این معادل سازی دستورات مشکلی داشت توی همین تاپیک بگه تا کمکش کنم:بوس:

damanpak
سه شنبه 19 دی 1391, 11:08 صبح
دوستان دوباره سلام،متاسفانه باز به مشکل برخوردم
اگه بخواهیم همین کاری که توی تاپیک اول گفتم رو انجام بدیم اما اینجا به جای جدول یک آرایه دوبعدی داشته باشیم باید چیکار کنیم؟

Mahmoud.Afrad
سه شنبه 19 دی 1391, 12:58 عصر
دوستان دوباره سلام،متاسفانه باز به مشکل برخوردم
اگه بخواهیم همین کاری که توی تاپیک اول گفتم رو انجام بدیم اما اینجا به جای جدول یک آرایه دوبعدی داشته باشیم باید چیکار کنیم؟

آرایه ای از چی؟
میتونید یک کلاس ایجاد کنید با دو مقدار(با توجه به اینکه گفتید دوبعدی هست). سپس آرایه(یا لیستی) از این کلاس ایجاد کرده و داده هاتون رو در این آرایه ذخیره کنید. با این کار میتونید از linq در سلکت کردن از این آرایه استفاده کنید.

damanpak
سه شنبه 19 دی 1391, 13:23 عصر
آرایه ای از چی؟
میتونید یک کلاس ایجاد کنید با دو مقدار(با توجه به اینکه گفتید دوبعدی هست). سپس آرایه(یا لیستی) از این کلاس ایجاد کرده و داده هاتون رو در این آرایه ذخیره کنید. با این کار میتونید از linq در سلکت کردن از این آرایه استفاده کنید.
سلام ممنون از توجه شما
من یک آرایه دوبعدی دارم که یک بعد کد افراد و بعد دیگه مبالغی رو نگه میداره بدین صورت



Ids mb
------------------------------------------------------------
1 325000
2 -12000
2 100000
2 20000
1 -170000
1 25000


حال مخوام با استفاده از linq به این نتیجه برسم



Ids mb
------------------------------------------------------------
1 180000
2 108000

Mahmoud.Afrad
سه شنبه 19 دی 1391, 15:59 عصر
کلاس زیر را در نظر بگیرید:
class cls
{
public int id;
public int mb;
}

حالا لیستی از این کلاس ایجاد کرده مقادیر را اضافه کنید:

List<cls> listOfCls = new List<cls>();

listOfCls.Add(new cls() { id = 1, mb = 325000 });
listOfCls.Add(new cls() { id = 1, mb = 170000 });
listOfCls.Add(new cls() { id = 1, mb = 25000 });
listOfCls.Add(new cls() { id = 2, mb = 12000 });
listOfCls.Add(new cls() { id = 2, mb = 100000 });
listOfCls.Add(new cls() { id = 2, mb = 20000 });


به روش زیر ابتدا گروه بندی کرده و بعد سلکت می کنیم:

dataGridView1.DataSource = (from i in listOfCls
group i by new { i.id } into g
select new { ID = g.Key.id, SUM = g.Sum(m => m.mb) }
).ToList();

/* OR
dataGridView1.DataSource = listOfCls.GroupBy(i => new { i.id })
.Select(k => new { ID = k.Key.id, SUM = k.Sum(m => m.mb) })
.ToList();
*/

گروهبندی بر اساس new { i.id } انجام خواهد شد.

damanpak
سه شنبه 19 دی 1391, 16:12 عصر
دوست عزیز ممنون از پیگیریتون اما من فکر میکنم راه ساده تری باشه که نیاز به ایجاد کلاس نباشه