Je ne pense pas que vous pouvez utiliser LINQ pour rendre le code que vous avez écrit plus agréable ou plus élégant en aucune façon. Je suppose que le type de editingElement.DataContext
est object
, vous aurez donc besoin d'écrire la distribution de toute façon. Si vous oubliez de la coulée, votre code est tout simplement indexé accès:
var rows = (DataRowView)editingElement.DataContext;
object obj = rows.Row[this.SelectedValuePath];
LINQ n'a pas de caractéristiques qui rendent l'indexation plus agréable, donc je pense que c'est le meilleur que vous pouvez obtenir. Une chose laide possible est que vous obtenez object
comme résultat et vous aurez besoin de couler cela à un autre type (par exemple CustomerInfo
).
Si vous utilisez LINQ depuis le début (pour remplir les données pour le DataContext
), vous pourriez probablement écrire quelque chose comme ceci pour accéder au client:
var rows = (IEnumerable<CustomerInfo>)editingElement.DataContext;
CustomerInfo info = rows.Row[this.SelectedValuePath];
Ce serait un peu plus élégant, parce que vous auriez besoin d'un seul casting. Cependant, je pense que votre code est bien et LINQ ne peut pas vous aider (dans ce morceau de code).
Copie possible de http://stackoverflow.com/questions/10855/linq-query-on-a-datatable –