Preencher ComboBox com LINQ
Seguinte, tenho a situação abaixo:
---------INICIO CODIGO---------------
Observação:
mTblHistoricoSintetico é DataTable e esta preenchido corretamente.
Dim dataTableGenercio = mTblHistoricoSintetico.Clone
'Filtrar vTblOrdensEnviadas
Dim vView As DataView
Dim vRegistro As DataRow
Dim vTblTempOrdensEnviadas As DataTable = vTblOrdensEnviadas.Copy
vView = vTblTempOrdensEnviadas.DefaultView
vView.RowFilter = ID_COL_CODCLIENTE & " = " & vCodCliente
For index As Integer = 0 To vView.Count - 1
vRegistro = dataTableGenercio.NewRow
vRegistro(ID_COL_CODCLIENTE) = vView(index)(ID_COL_CODCLIENTE)
vRegistro(ID_COL_ATIVO) = vView(index)(ID_COL_ATIVO)
vRegistro(ID_COL_NOMECLIENTE) = vView(index)(ID_COL_NOMECLIENTE)
dataTableGenercio.Rows.Add(vRegistro)
Next
'Filtrar vTblOrdensExecutadas
Dim vTblTempOrdensExecutadas As DataTable = vTblOrdensEnviadas.Copy
vView = vTblTempOrdensExecutadas.DefaultView
vView.RowFilter = ID_COL_CODCLIENTE & " = " & vCodCliente
For index As Integer = 0 To vView.Count - 1
vRegistro = dataTableGenercio.NewRow
vRegistro(ID_COL_CODCLIENTE) = vView(index)(ID_COL_CODCLIENTE)
vRegistro(ID_COL_ATIVO) = vView(index)(ID_COL_ATIVO)
vRegistro(ID_COL_NOMECLIENTE) = vView(index)(ID_COL_NOMECLIENTE)
dataTableGenercio.Rows.Add(vRegistro)
Next
'Dim names = (From dr In dataTableGenercio.Rows _
' Select ID_COL_ATIVO.Distinct())
Dim camposDistintos = (From dr In dataTableGenercio.Rows _
Select ID_COL_ATIVO).Distinct()
cmbAtivos.ValueMember = ID_COL_ATIVO
cmbAtivos.DisplayMember = ID_COL_ATIVO
cmbAtivos.DataSource = camposDistintos.ToList
cmbClientes.ValueMember = ID_COL_CODCLIENTE
cmbClientes.DisplayMember = ID_COL_NOMECLIENTE
cmbClientes.DataSource = camposDistintos.ToList
------------FIM CODIGO-----------------
- Preciso preencher estas combobox com os Ativos e Clientes, mas preciso do Distinct, quero usar o LINQ para esta tarefa.
Obrigado desde já e aguardo contato,
Vinicius Climaco.
Vinicius Climaco
Curtidas 0
Respostas
Luiz Maia
02/03/2010
Ola Vinicius, tente usar o exemplo abaixo:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// replace the data in the db with new info
da.Fill(dtUsers); // save the source
cboName.ItemsSource = from u in dtUsers.AsEnumerable() select new { u.UserID, FormattedName = String.Format(" ", query.FirstName, query.MiddleInitial, query.LastName)); cboName.DisplayMemberPath = "FormattedName";
cboName.SelectedValuePath = "UserID"; } Não sei qual exatamente sua dúvida, mas creio que o exemplo que me mandou não funciona, correto? Aguardo seu contato Att Luiz Maia
{
// replace the data in the db with new info
da.Fill(dtUsers); // save the source
cboName.ItemsSource = from u in dtUsers.AsEnumerable() select new { u.UserID, FormattedName = String.Format(" ", query.FirstName, query.MiddleInitial, query.LastName)); cboName.DisplayMemberPath = "FormattedName";
cboName.SelectedValuePath = "UserID"; } Não sei qual exatamente sua dúvida, mas creio que o exemplo que me mandou não funciona, correto? Aguardo seu contato Att Luiz Maia
GOSTEI 0
Vinicius Climaco
02/03/2010
Seguinte, o que estou precisando é preencher uma combobox com os dados de um datatable através do LINQ, porém antes através do LINQ também quero das distinct em uma coluna. Desculpe, mas este exemplo não foi satisfatório e não cheguei ao resultado esperado ainda.
GOSTEI 0
Luiz Maia
02/03/2010
Vinicius,
Para popular a combo com os registros de um DataTable, é somente isto:
private DataTable dt = Customers.Retrieve();
ComboBox1.DataSource = dt;
ComboBox1.DisplayMember = "FullName";
ComboBox1.ValueMember = "CustomerId"; Com Linq você pode adicionar critérios de filtragem, e para modificar os registros usando o Distinct faça o script abaixo: var query = (dt.AsEnumerable().Distinct());
ComboBox2.DataSource = query.AsDataView();
ComboBox2.DisplayMember = "FullName";
ComboBox2.ValueMember = "CustomerId"; Aguardo seu contato. Att Luiz Maia
ComboBox1.DisplayMember = "FullName";
ComboBox1.ValueMember = "CustomerId"; Com Linq você pode adicionar critérios de filtragem, e para modificar os registros usando o Distinct faça o script abaixo: var query = (dt.AsEnumerable().Distinct());
ComboBox2.DataSource = query.AsDataView();
ComboBox2.DisplayMember = "FullName";
ComboBox2.ValueMember = "CustomerId"; Aguardo seu contato. Att Luiz Maia
GOSTEI 0
Luiz Maia
02/03/2010
E ai Vinicius, resolveu?
Aguardo...
Abraços
Att
Luiz Maia
GOSTEI 0
Luiz Maia
02/03/2010
Vinicius,
Como não obtivemos resposta, estamos concluindo o chamado.
Continuamos a sua disposição para qualquer tipo de dúvida.
Abraços
Att
Luiz Maia
GOSTEI 0