PDA

View Full Version : سوال: Group by و جمع زدن بعضی فیلدها در Linq



hamid_0341
پنج شنبه 17 مرداد 1392, 09:59 صبح
باسلام
من یک Gridview دارم که اطلاعات انبار نشون میده میخوام وقتی که لود شد اگه از کالای X یک جا 3 عدد اضافه شده باشه یک جا 2 عدد در گرید ویو 2 تا row اضافه نشه Group by بشن و یک Row نشون داده بشه و یکی از فیلد ها مثلا تعداد باهم جمع بشه و 5 نشون بده
با دستور Group by در LinQ زیاد آشنایی ندارم :افسرده:
ممنون میشم اگه راهنمایی کنید :قلب::قلب:

hamid_0341
پنج شنبه 17 مرداد 1392, 10:21 صبح
:ناراحت:کسی نظری نداره ؟

Mahmoud.Afrad
پنج شنبه 17 مرداد 1392, 19:26 عصر
var query = from t in db.tbl
group t by new {t.Name}
into g
select new
{
g.Key.Name,
SUM = g.Sum(i => i.count)
};

hamid_0341
یک شنبه 20 مرداد 1392, 11:20 صبح
اقا من اینو استفاده کردم ولی فقط یک فیلد پر میکنه KalaCode
Linq.DataClasses1DataContext db = new Linq.DataClasses1DataContext();
var query = from t in db.Anbar_tbls
group t by new { t.KalaCode }
into g
select new
{
g.Key.KalaCode,

SUM = g.Sum(i => i.Ted)
};
dataGridView1.DataSource = query;

hamid_0341
یک شنبه 20 مرداد 1392, 11:53 صبح
کسی نظری نداره؟

Salah Sanjabian
یک شنبه 20 مرداد 1392, 17:55 عصر
سلام لازم نیست Sum رو روش اعمال کنی

Linq.DataClasses1DataContext db = new Linq.DataClasses1DataContext();
var query = from t in db.Anbar_tbls
group t by new { t.KalaCode }
into g
select new
{
g.Key.KalaCode,

SUM = g.Count()
};
dataGridView1.DataSource = query;

Mahmoud.Afrad
یک شنبه 20 مرداد 1392, 21:09 عصر
اقا من اینو استفاده کردم ولی فقط یک فیلد پر میکنه KalaCode
Linq.DataClasses1DataContext db = new Linq.DataClasses1DataContext();
var query = from t in db.Anbar_tbls
group t by new { t.KalaCode }
into g
select new
{
g.Key.KalaCode,

SUM = g.Sum(i => i.Ted)
};
dataGridView1.DataSource = query;
خب منطقا همینطوره. کوئری sql هم بخواهید بنویسید همینطوره و اگر اطلاعات دیگه ای بخواهید باید از join و یا روش های دیگه استفاده کنید.
چه اطلاعاتی رو نیاز دارید؟ ساختار جداولی که به اطلاعاتش نیاز دارید چیه؟


سلام لازم نیست Sum رو روش اعمال کنی

Linq.DataClasses1DataContext db = new Linq.DataClasses1DataContext();
var query = from t in db.Anbar_tbls
group t by new { t.KalaCode }
into g
select new
{
g.Key.KalaCode,

SUM = g.Count()
};
dataGridView1.DataSource = query;

چرا؟ مگر سوال مربوط به جمع نیست؟ (جمع یک ستون با تعداد متفاوته)

gilas1368
یک شنبه 20 مرداد 1392, 21:17 عصر
چرا با StoredProcedure کار نمیکنید
راحتتر ب جواب میرسید
سرعتش هم بیشتره

hamid_0341
دوشنبه 21 مرداد 1392, 11:45 صبح
خب منطقا همینطوره. کوئری sql هم بخواهید بنویسید همینطوره و اگر اطلاعات دیگه ای بخواهید باید از join و یا روش های دیگه استفاده کنید.
چه اطلاعاتی رو نیاز دارید؟ ساختار جداولی که به اطلاعاتش نیاز دارید چیه؟


چرا؟ مگر سوال مربوط به جمع نیست؟ (جمع یک ستون با تعداد متفاوته)

ببخشید میشه یک دستور که join داشته باشه برای مثال بزارید ؟

Mahmoud.Afrad
دوشنبه 21 مرداد 1392, 11:53 صبح
شما ساختار جداولی که اطلاعاتش رو نیاز دارید بزارید تا ببینم چی اصلا میخواهید. در ضمن برای join قبلا مثال زده شده میتونی ازش استفاده کنید.

hamid_0341
دوشنبه 21 مرداد 1392, 18:49 عصر
ببین اقا من یک انبار دارم میخوام کالاهای توی انبار تفکیک بشن یعنی مثلا اگه از کالای لامپ 5 تا با کد فلان دارین یکی دیگه هم با این کد و نام 3 تا داریم یک Row توی
گرید ویو نشون بده نه 2 تا و تعداد 8 بنویسه :لبخند:

m92.goodarzi
دوشنبه 21 مرداد 1392, 19:24 عصر
private void button2_Click(object sender, EventArgs e)
{
List<student> students = new List<student>();
students.Add(new student(){C="a",name = "s1",score = 1});
students.Add(new student() { C = "a", name = "s2", score = 2 });
students.Add(new student() { C = "b", name = "s3", score = 3 });
dataGridView1.DataSource = (from s in students
group s by s.C
into g
let ave = g.Average(s => s.score)
select new {g.Key, ave}).ToList();

}

class student
{
public string name { get; set; }
public string C { get; set; }
public int score { get; set; }
}

Mahmoud.Afrad
دوشنبه 21 مرداد 1392, 22:54 عصر
ببین اقا من یک انبار دارم میخوام کالاهای توی انبار تفکیک بشن یعنی مثلا اگه از کالای لامپ 5 تا با کد فلان دارین یکی دیگه هم با این کد و نام 3 تا داریم یک Row توی
گرید ویو نشون بده نه 2 تا و تعداد 8 بنویسه :لبخند:
این که شد کدکالا و تعداد ، که در کوئری قبلی همین کار انجام میشه. این مربوط به جدول انبار. حالا اگر به اطلاعات خود کالا هم نیاز داری باید حاصل رو براساس کدکالا با جدول کالا join بزنی.

راهنمایی بیشتر میخوای باید نام ستونها و نوعشون رو در دو تا جدول انبار و کالا توضیح بدی. اگر نه میتونی توی msdn در مورد join جستجو کنی.