Ik heb een form met 3 comboboxen: Plaats, Straat, Huisnummer. Ook heb ik een Excelsheet met die data.
Ik heb de Excel data ingelezen in een datatable, het gaat om veel data (350.000+ rijen). Het inlezen duurt dan ook wel een paar seconden
Nu wil ik dat de gebruiker eerst een plaats selecteert, dan een straat en vervolgens een huisnr.
Ik wil mijn eerste combobox vullen met alle unieke plaatsnamen.
Na veel zoeken heb ik deze LINQ code bij elkaar gesprokkeld:
Bovenstaande code geeft na enkele (6-8) seconden een combobox met alleen maar 'System.Data.DataRowView' als items.
Eigenlijk wil ik Distinct gebruiken:
Maar dat kan zo niet: 'System.InvalidCastException: Kan een object van het type System.String niet converteren naar het type System.Data.DataRow.'
Als ik de query van het type EnumerableRowCollection<String> laat zijn, werkt mijn query.AsDataView() niet meer.
Iemand enig idee hoe ik een subselectie kan maken van mijn datatable en die als bindingsource voor mijn combobox kan gebruiken?
Ik heb de Excel data ingelezen in een datatable, het gaat om veel data (350.000+ rijen). Het inlezen duurt dan ook wel een paar seconden
Nu wil ik dat de gebruiker eerst een plaats selecteert, dan een straat en vervolgens een huisnr.
Ik wil mijn eerste combobox vullen met alle unieke plaatsnamen.
Na veel zoeken heb ik deze LINQ code bij elkaar gesprokkeld:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| string columnName = (string)frmLocationFinder.AttributeLabel1.Tag; BindingSource bindingSource1 = new BindingSource(); this.frmLocationFinder.AttributeComboBox1.DataSource = bindingSource1; this.frmLocationFinder.AttributeComboBox1.DisplayMember = columnName; EnumerableRowCollection<DataRow> query = ( from row in this.dt.AsEnumerable() orderby row.Field<String>(columnName) select row); DataView view = query.AsDataView(); bindingSource1.DataSource = view; |
Bovenstaande code geeft na enkele (6-8) seconden een combobox met alleen maar 'System.Data.DataRowView' als items.
Eigenlijk wil ik Distinct gebruiken:
C#:
1
2
3
4
5
| EnumerableRowCollection<DataRow> query = ( from row in this.fileContent.AsEnumerable() orderby row.Field<String>(columnName) select row.Field<String>(columnName)) .Distinct<String>(); |
Maar dat kan zo niet: 'System.InvalidCastException: Kan een object van het type System.String niet converteren naar het type System.Data.DataRow.'
Als ik de query van het type EnumerableRowCollection<String> laat zijn, werkt mijn query.AsDataView() niet meer.
Iemand enig idee hoe ik een subselectie kan maken van mijn datatable en die als bindingsource voor mijn combobox kan gebruiken?