Estaba trabajando con una DataTable y noté que Resharper me recomendó que puedo convertir un bucle en una expresión LINQ. Así lo hice y fue reescrito en la sintaxis de expresión de consulta (simplificado):LINQ - Método vs diferencia de sintaxis de consulta
var test1 = from DataRow row in dt.Rows select row;
Personalmente, prefiero sintaxis del método por lo reescribió a esto:
var test2 = dt.Rows.Select(row => row);
y se rompió.
'System.Data.DataRowCollection' no contiene una definición de 'Seleccionar' y ningún método de extensión 'Seleccionar' aceptar un primer argumento de tipo 'System.Data.DataRowCollection' se pudo encontrar (¿falta una directiva using o una referencia de ensamblado?)
Dado que la expresión de consulta son translated to method calls, ¿por qué es que los primeros trabajos, pero no la segunda? Esperaba que ambos o ninguno de los dos funcionara, lo cual obviamente no es el caso.
Lo cual es necesario porque 'DataRowCollection' implementa' IEnumerable', no 'IEnumerable'. –
@ChrisShouts: Ah, me había dado cuenta de esto antes, pero nunca entendí exactamente por qué. El hecho de que implementa el "incorrecto" IEnumerable es lo que me faltaba. :) – Chris