現在、LINQの基本を理解しようとしています。私はLINQPadを使用してNetflix ODataソースを照会しています。LINQラムダクエリ 'select'がoDataと連携しない
ラムダクエリを使用したとき、私は単一のプロパティを選択するように見えることはできません - 理解クエリは完璧に動作します。 Netflix oDataソースでlambdasを使用してより複雑なクエリを実行するコードスニペットが見つかりました。これはエンティティの1つのプロパティを返すためにうまくいくようです。
// 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();
誰もが1つのプロパティを返すように求められたときの基本的なラムダクエリが失敗する理由としていくつかの光を当てますか?
ああ、私は今それを試して、それは動作します! - 私が理解していないのは、他のラムダクエリ(人)が私に投影用の匿名型を作成する必要がないということです。 – Dal
結果を具体化する '.First()'を呼び出すので、レコード全体を吸い取り、クライアントのメモリ内のプロパティを選択します。 –
匿名タイプを使用する必要がある理由について説明しますか? ありがとう –