これは繰り返しの質問である場合はお詫び申し上げます。基本的に私が達成しようとしているのは、私の投影法が別のメソッド/クラスであり、これを再利用できるようにすることです(LINQの初心者です)。URIで指定されたクエリが有効でない+投影+ LINQ選択
public static Expression<Func<MyObject, object>> getProjection()
{
return r => new
{
Name = r.Name,
Address = r.Address,
City = r.City,
PostalCode = r.PostalCode,
Province = r.Province,
Country = r.Country,
Phone = r.Phone,
Website = r.Website
};
}
しかし、私はこのようにProjectionを呼び出します。
var filteredList = db.MyObject.Select(Projections.getProjection()).AsQueryable();
return Ok(filteredList);
それから私は、エラー
は、URIで指定されたクエリが有効ではありません取得します。タイプ 'System.Object'で 'Name'という名前のプロパティ を見つけることができませんでした。
プロジェクションヘルパーメソッドをコピーして貼り付けだけで実際のプロジェクションに置き換えた場合、正常に機能します。私はちょうどヘルパーメソッド "getProjection"を作成して、他のSelectメソッドのために同じ投影を再び書き直さないようにしようとしています。まず、これがProjectionを呼び出す正しい方法であるかどうかを確認することができます。次に、そのODataエラーを取り除く方法を教えてください。
ありがとう
オブジェクトではなく強く型付けされたアイテムを返す場合は、同じエラーが発生しますか?おそらくODataは動的オブジェクトについて混乱しているかもしれません。私の2番目の前提 - クエリの評価が必要な場合 - Select文の後にToList()を呼び出そうとしています(db.MyObject.Select(Projections.getProjection())ToList()。AsQueryable()) –
@ n.piskunovありがとう返信のために。私は強く型付けを試みましたが、私はまだ同じエラーがあります。その後、私はあなたの2番目の提案を試みて、私は別のエラーが発生しました。下記参照。 === "エンティティまたは複合型 'Sample.DataContexts.MyObject'は、LINQ to Entitiesクエリで構築できません。"} – programmerboy