В настоящее время я пытаюсь понять некоторые основы с LINQ. Я использую LINQPad для запроса источника OData Netflix.LINQ Lambda query 'select' не работает с oData
Источник:http://odata.netflix.com/v2/Catalog/
Я не могу показаться, чтобы выбрать отдельные свойства при использовании лямбда-запроса - запрос понимания работает отлично. Я нашел фрагмент кода, который выполняет более сложный запрос с использованием lambdas в источнике Oflata Netflix, и это, похоже, отлично работает для возврата одного свойства объекта.
// 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();
Может кто-нибудь пролить некоторый свет на то, почему основной лямбда-запроса неудовлетворительную, когда их просят вернуть одно свойство?
ahhh, я пробовал это сейчас, и он работает! - Я не понимаю, как другой лямбда-запрос (люди) не требует от меня создания анонимного типа для проецирования? – Dal
Поскольку вы вызываете '.First()' на нем, что материализует результаты, оно отсасывает всю запись и затем выбирает свойства в памяти на клиенте. –
Не могли бы вы объяснить, почему для этого требуется использование анонимного типа? Спасибо –