Beste tweakeraars,
Ik wil een database tabel uitlezen en in een lijst zetten die gegroepeerd is. Met deze uiteindelijke lijst vul ik uiteindelijk weer een tabel met in de GUI. Alleen 2 kolommen moeten uniek zijn, anders moet er een nieuwe IGrouping worden aangemaakt.
Ik heb de volgende code om in ieder geval al op 1 kolom te sorteren.
Ik heb al rondgekeken, en daar worden anonymous types gebruikt. Nou ben ik nieuw voor C# en weet ik niet precies hoe ik weer door de anonymous types IGrouping moet heen loopen voor de tabel.
Er moet dus gesorteerd worden op voor- en achternaam. Zodat niet alle kinderen van de verschillende Peter's, Piet's, Klaas'sen bij elkaar opgeteld worden. Maar wel dat bij de combinatie van de voor en achternaam de kinderen bij elkaar opgeteld worden.
Kan iemand mij uitleggen hoe ik dit moet doen?
Ik wil een database tabel uitlezen en in een lijst zetten die gegroepeerd is. Met deze uiteindelijke lijst vul ik uiteindelijk weer een tabel met in de GUI. Alleen 2 kolommen moeten uniek zijn, anders moet er een nieuwe IGrouping worden aangemaakt.
Ik heb de volgende code om in ieder geval al op 1 kolom te sorteren.
C#:
1
2
3
4
5
6
7
8
9
10
| public List<IGrouping<string, dbList>> GetGroupsFromDb(int id, SomeClass e) { SomeClass dbE = Db.dbList.Where(DbE => DbE.Id == e.Id).FirstOrDefault(); List<IGrouping<string, dbList>> query = new List<IGrouping<string, dbList>>(); if(dbE != null) { query = dbE.dbList.Where(p => p.id == id).GroupBy(p => p.FirstName, p => e).ToList(); } return query; } |
Ik heb al rondgekeken, en daar worden anonymous types gebruikt. Nou ben ik nieuw voor C# en weet ik niet precies hoe ik weer door de anonymous types IGrouping moet heen loopen voor de tabel.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| for (int i = 0; i < list.Count; i++) { Overview.RowCount += 1; Overview.RowStyles.Add(new RowStyle(SizeType.AutoSize, 25F)); Overview.AutoSize = true; Label name = new Label() { Text = list[i].Key }; Label lastName = new Label(); Label kids = new Label(); foreach (IGrouping<string, tblDefectDetailsSet> groupItem in defectList.Where(p => p.Key.Equals(name.Text.ToString()))) { foreach (tblDefectDetailsSet s in groupItem) { lastName.Text = s.LastName; kids += s.Kids } } kids.RightToLeft = System.Windows.Forms.RightToLeft.Yes; Overview.Controls.Add(name, 0, DefectOverview.RowCount - 1); Overview.Controls.Add(lastName, 1, DefectOverview.RowCount - 1); Overview.Controls.Add(kids, 2, DefectOverview.RowCount - 1); } |
Er moet dus gesorteerd worden op voor- en achternaam. Zodat niet alle kinderen van de verschillende Peter's, Piet's, Klaas'sen bij elkaar opgeteld worden. Maar wel dat bij de combinatie van de voor en achternaam de kinderen bij elkaar opgeteld worden.
Kan iemand mij uitleggen hoe ik dit moet doen?