2
Ich benutze Linq mit DataSet für Excel-Multi-Blatt. Wie verwendet man die Gruppierung nach LINQ?Wie verwendet man "Gruppieren nach" LINQ?
Beispieldaten:
Name | Rate | Date | Code | ROW_SEQ
A | 12 | 01/01/2015 | 12 | 1
B | 13 | 01/01/2015 | 12 | 2
Sub Total | 25 | 01/01/2015 | 12 |
C | 10 | 01/01/2015 | 12 | 3
Grand Total | 35 | 01/01/2015 | 12 |
D | 15 | 10/01/2015 | 15 | 1
E | 16 | 10/01/2015 | 15 | 2
Sub Total | 31 | 10/01/2015 | 15 |
F | 10 | 10/01/2015 | 15 | 3
Grand Total | 41 | 10/01/2015 | 15 |
C# Code:
protected void btnExportExcel_Click(object sender, EventArgs e)
{
/*== How to use Group by LINQ? ==*/
DataSet dsTmp = new DataSet();
DataTable dtTmp = dtExport.Copy();
var grouped = from table in dtTmp.AsEnumerable()
group table by new { date_Col = table["date"] , code_Col = table["code"] } into groupby
select new
{
Value = groupby.Key,
ColumnValues = groupby
};
/*== How to use Group by LINQ? ==*/
foreach (var key in grouped)
{
dtTmp = new DataTable();
dtTmp = dtExport.Clone();
dtTmp.TableName = (key.Value.settle_date_Col + "-" + key.Value.bank_code_Col).Replace("00:00:00", "").Replace("/","");
foreach (var rw in key.ColumnValues)
{
dtTmp.ImportRow(rw);
}
dtTmp.AcceptChanges();
dsTmp.Tables.Add(dtTmp.Copy());
}
dsTmp.AcceptChanges();
string fileName = string.Format("{0}_{1}.xls", this._ID, DateTime.Now.ToString("yyyyMMdd_HHmmss"));
ExcelMultiSheet.ToExcel(dsTmp, fileName, Page.Response);
}
-Code Ergebnisse:
Sheet1
Name | Rate | Date | Code | ROW_SEQ
A | 12 | 01/01/2015 | 12 | 1
B | 13 | 01/01/2015 | 12 | 2
C | 10 | 01/01/2015 | 12 | 3
Sheet2
Name | Rate | Date | Code | ROW_SEQ
Sub Total | 25 | 01/01/2015 | 12 |
Grand Total | 35 | 01/01/2015 | 12 |
Sheet3
Name | Rate | Date | Code | ROW_SEQ
D | 15 | 10/01/2015 | 15 | 1
E | 16 | 10/01/2015 | 15 | 2
F | 10 | 10/01/2015 | 15 | 3
Sheet4
Name | Rate | Date | Code | ROW_SEQ
Sub Total | 31 | 10/01/2015 | 15 |
Grand Total | 41 | 10/01/2015 | 15 |
Aber ich brauche Ergebnisse:
Sheet1
Name | Rate | Date | Code | ROW_SEQ
A | 12 | 01/01/2015 | 12 | 1
B | 13 | 01/01/2015 | 12 | 2
Sub Total | 25 | 01/01/2015 | 12 |
C | 10 | 01/01/2015 | 12 | 3
Grand Total | 35 | 01/01/2015 | 12 |
Sheet2
Name | Rate | Date | Code | ROW_SEQ
D | 15 | 10/01/2015 | 15 | 1
E | 16 | 10/01/2015 | 15 | 2
Sub Total | 31 | 10/01/2015 | 15 |
F | 10 | 10/01/2015 | 15 | 3
Grand Total | 41 | 10/01/2015 | 15 |
Dank voraus. :)
auf der Grundlage dieser Daten und der Gruppe von Ihnen verwenden, sollten Sie nur zwei Gruppen bekommen. Sind Sie sicher, dass die Untersummen und Gesamtsummen weder für das Datum noch für den Code unterschiedliche Werte haben? Vielleicht ist der zeitliche Teil der Daten anders? – juharr
@juhar ich sicher, dass Untersummen und Gesamtsummen keine unterschiedlichen Werte haben. – nettoon493
Ist es möglich, dass sich die Typen unterscheiden? Vielleicht haben die Sub-Toal- und Grand-Total-Zeilen String-Werte anstelle von 'DateTime' und' Int' oder umgekehrt. – juharr