J'ai un DataGridView qui est lié à une liste d'objets appelée "BaseChange". Les objets BaseChange sont composés de 4 propriétés ...La requête Linq a une erreur de distribution implicite pour DataGridViewRow lorsque l'option strict est activée
- ChangeType
- ChangeStatus
- ChangeDescription
- LastChangeDate
Le datagridview comporte des colonnes pour les 4 valeurs ainsi qu'un 5 (une colonne de case à cocher appelée "colIsSelected"). Il n'y a aucun problème à lier la liste à la grille et à afficher les éléments.
Le problème est que la requête qui obtient les éléments sélectionnés dans la grille me donne une erreur de distribution implicite lorsque l'option strict est activée.
C'est la requête ...
Dim _changes As List(Of BaseChange)
_changes = (From _row As DataGridViewRow In dgvChanges.Rows() _
Where Convert.ToBoolean(_row.Cells(NAME_COLUMN_IS_SELECTED).Value) = True _
Select DirectCast(_row.DataBoundItem, BaseChange)).ToList()
... et il produit des résultats corrects avec option stricte off. Le squiggle de distribution implicite est sur le code "_row As DataGridViewRow", et le message complet est "Conversion implicite de 'Object' à 'System.Windows.Forms.DataGridViewRow'".
Si j'exclut le "As DataGridViewRow" de la requête, j'obtiens une erreur de liaison tardive sur les _row.Cells et _row.DataBoundItem et cela échoue également l'option strict.
J'ai besoin que cela fonctionne avec Option Strict activé, et en VB. Est-ce que j'ai râté quelque chose? Quelqu'un a des suggestions?
Cela résout le problème, mais je suis encore un peu confus par la raison pour laquelle la collection Rows() n'est pas réellement considérée comme une collection de DataGridViewRow. Savez-vous où je peux obtenir plus d'informations à ce sujet? Ceci est pour une petite application mais je suis préoccupé par la quantité de coulée qui pourrait être nécessaire dans une application plus grande. Je n'ai pas eu à le faire pour d'autres types de collection (génériques), est-ce quelque chose à attendre lors de l'utilisation de LINQ par rapport à des collections non génériques? Est-ce que c'est aussi gros d'un coup de performance qu'il semble être? – StingyJack
J'ai ajouté du texte en bas, fondamentalement, ajouter l'option Infer –
J'ai ajouté le paragraphe "Explication" en bas qui explique pourquoi la distribution est requise, quand elle n'est pas dans la plupart des exemples de code que vous voyez. –