PDA

View Full Version : حرفه ای: گرفتن ردیف های datatable بر اساس گروه بندی یک ستون



aminaltavista
دوشنبه 27 آبان 1398, 13:44 عصر
سلام دوستان ببخشید اگه عنوان مناسب تری به کار نبردم
راسش تو سناریوی من یه datatable هست که توش اطلاعات یه جدول هست که بر اساس یه ستون دسته بندی میشن هستش ، برای مثال شما فرض کنید که میخوام اطلاعات واکشی شده خریداران چند تا شهر رو یکی یکی بکشم بیرون یعنی از 1000 تا ردیف واکشی شده که مربوط به 10 شهر هست ده بار لوپ بزنم و دیتاهای هر شهر رو جداگونه بهش دسترسی داشته باشم . حالا دستوری خودم استفاده میکنم اینه :

foreach (DataRow item in dt.AsEnumerable().GroupBy(s => s.Field<int>("cityid")))
اما سی شارپ نمیتونه (یا بهتره بگم خودم ) نمیتونم به Datarow ها دسترسی داشته باشم خروجی از نوع<int,DataRow> هست و من به ازای هر بار لوپ دنبال datarow اون هستم . از دوستانی که تو این زمینه تبهر دارند میخوام بهم کمک کنن مرسی

aminaltavista
چهارشنبه 29 آبان 1398, 07:19 صبح
چند روزه پست زدم ن جوابی ن چیزی ! :ناراحت:
دوستان بالاخره تونستم با یه روش سر دستی(البته فعلا ) مشکلم رو حل کنم(بنازم خودوم):

DataTable dsf = dt.AsEnumerable().Where(s => s.Field<int>("cityid") == item.Key).CopyToDataTable();


حالا فقط کافیه بگیم dsf.Rows ، اصولش اینه که بگیم item.value یا همچین چیزی . ولی خب ...
البته جا داره از این پست تشکر کنم که جرقه ایده رو زد:
https://barnamenevis.org/showthread.php?550145-%D8%AD%D8%B0%D9%81-%D8%B1%D8%AF%DB%8C%D9%81%D9%87%D8%A7%DB%8C-%DB%8C%DA%A9-%D8%AF%DB%8C%D8%AA%D8%A7%D8%AA%DB%8C%D8%A8%D9%84-%D8%A7%D8%B2-%D8%AF%DB%8C%D8%AA%D8%A7%D8%AA%DB%8C%D8%A8%D9%84-%D8%AF%DB%8C%DA%AF%D8%B1-%D8%A8%D9%88%D8%B3%DB%8C%D9%84%D9%87-%DB%8C%DA%A9-%D8%B3%D8%AA%D9%88%D9%86-%D9%85%D8%B4%D8%AA%D8%B1%DA%A9&p=2398941&viewfull=1#post2398941

the king
چهارشنبه 29 آبان 1398, 09:09 صبح
چند روزه پست زدم ن جوابی ن چیزی ! :ناراحت:
دوستان بالاخره تونستم با یه روش سر دستی(البته فعلا ) مشکلم رو حل کنم(بنازم خودوم):

DataTable dsf = dt.AsEnumerable().Where(s => s.Field<int>("cityid") == item.Key).CopyToDataTable();


حالا فقط کافیه بگیم dsf.Rows ، اصولش اینه که بگیم item.value یا همچین چیزی . ولی خب ...
البته جا داره از این پست تشکر کنم که جرقه ایده رو زد:
https://barnamenevis.org/showthread.php?550145-%D8%AD%D8%B0%D9%81-%D8%B1%D8%AF%DB%8C%D9%81%D9%87%D8%A7%DB%8C-%DB%8C%DA%A9-%D8%AF%DB%8C%D8%AA%D8%A7%D8%AA%DB%8C%D8%A8%D9%84-%D8%A7%D8%B2-%D8%AF%DB%8C%D8%AA%D8%A7%D8%AA%DB%8C%D8%A8%D9%84-%D8%AF%DB%8C%DA%AF%D8%B1-%D8%A8%D9%88%D8%B3%DB%8C%D9%84%D9%87-%DB%8C%DA%A9-%D8%B3%D8%AA%D9%88%D9%86-%D9%85%D8%B4%D8%AA%D8%B1%DA%A9&p=2398941&viewfull=1#post2398941



foreach (var group in dt.AsEnumerable().GroupBy(s => s.Field<int>("cityid")))
{
foreach (var row in group)
{
}
}




foreach (var group in dt.AsEnumerable().GroupBy(s => s.Field<int>("cityid")))
{
var groupDt = group.CopyToDataTable();
foreach (var row in groupDt.Rows)
{
}
}

aminaltavista
چهارشنبه 29 آبان 1398, 20:40 عصر
foreach (var group in dt.AsEnumerable().GroupBy(s => s.Field<int>("cityid")))
{
foreach (var row in group)
{
}
}




foreach (var group in dt.AsEnumerable().GroupBy(s => s.Field<int>("cityid")))
{
var groupDt = group.CopyToDataTable();
foreach (var row in groupDt.Rows)
{
}
}


دومی از همه موارد قابل قبولتره (ای بنازم خودت)