0

リストのフィルタリングを処理するこの Web サイトの一部を書いています。ユーザーがいくつかのオプションを選択すると、データはサーバー側でフィルタリングされ、AJAX 要求を通じてユーザーに戻されます。

この例では、自動車メーカー (フォード、BMW、フィアットなど) のテーブルがあり、すべての車両のリストへの外部キーがあり、さらに車両タイプのテーブルへの外部キーがあるとします。

したがって、次のようになります。

メーカー

  • メーカーID
  • 名前

タイプ

  • タイプID
  • 名前

車両

  • 車両ID
  • メーカーID
  • タイプID
  • 名前

これは、適切なエンティティといくつかの便利なナビゲーション プロパティとして返されます。ただし、これは私が直面している問題です。製造業者の車両をインラインのタイプに基づいてフィルタリングしたいとします。

foreach (var manufacturer in manufacturers)
{
    manufacturer.Vehicles = manufacturer.Vehicles.Any(v => v.Type.Name == "Car"));
}

これはかなり簡単に思えますが、エラーが発生します:

タイプ 'System.Collections.Generic.IEnumerable' を 'System.Data.Objects.DataClasses.EntityCollection' に暗黙的に変換することはできません。明示的な変換が存在します (キャストがありませんか?)

EntityCollection へのキャストは役に立たず、実行時に例外がスローされます。Linq クエリの結果をナビゲーション プロパティに割り当てることさえ可能ですか? これを行う別の方法はありますか?私はViewModelを使用していますが、辞書に書いてすべて手動で処理するのではなく、できればナビゲーションプロパティを再利用したいと思います。

4

1 に答える 1

0

問題は、manufacturer.Vehiclesの型がEntityCollectionで、manufacturer.Vehicles.Anyが型IEnumerableのオブジェクトを返すため、次のように試してください。

foreach ( manufacturer in manufacturers) {
   manufacturer.Vehicles = (from vehicle in manufacturer.Vehicleswhere vehicle.Type.Name == "Car");
}
于 2012-08-17T16:50:38.100 に答える