Actualmente estoy tratando de comprender algunos de los fundamentos con LINQ. He estado usando LINQPad para consultar el origen de Netflix OData.LINQ La consulta Lambda 'select' no funciona con oData
Me parece que no puede seleccionar las propiedades individuales cuando se utiliza una consulta lambda - la consulta comprensión funciona perfectamente. Encontré un fragmento de código que realiza una consulta más compleja usando lambdas en la fuente de NetFlix oData, y parece funcionar bien para devolver una propiedad de la entidad.
// works fine
var compQuery = from t in Titles
where t.ReleaseYear == 2007
select new { t.Name };
compQuery.Dump();
// fails: "Can only specify query options (orderby, where, take, skip) after last navigation."
var lambdaQuery = Titles
.Where(t => t.ReleaseYear == 2007)
.Select(t => t.Name);
lambdaQuery.Dump();
// works fine - found on SO.
var lambdaQuery2 = People
.Expand("TitlesActedIn")
.Where(p => p.Name == "George Lucas")
.First()
.TitlesActedIn.Select(t => t.ShortName);
lambdaQuery2.Dump();
¿Alguien podría arrojar alguna luz sobre por qué está fallando cuando se le preguntó la consulta básica lambda para devolver una propiedad?
ahhh, lo intenté ahora y funciona! - Lo que no entiendo es ¿cómo la otra consulta lambda (personas) no requiere que cree un tipo anónimo para la proyección? – Dal
Como llama a '.First()' en él, lo que materializa los resultados, absorbe todo el registro y luego selecciona las propiedades en la memoria del cliente. –
¿Podría explicar por qué requiere el uso de un tipo anónimo? Gracias –