oDataサービスのメソッドを作成する場合、以下のlinqがあり、結果をフィルター処理するための動的な「where」句が必要です(結合の「new」はエンティティデータモデルの複合PK用です)。
var query = from pl in CurrentDataSource.ProductListing
join pla in CurrentDataSource.ProductListingAttribute
on new {pl.ProductID, pl.WebCategoryID, pl.ParentProductID}
equals new {pla.ProductID, pla.WebCategoryID, pla.ParentProductID}
join att in CurrentDataSource.Attribute
on pla.AttributeID
equals att.AttributeID
join attItem in CurrentDataSource.AttributeItem
on pla.AttributeItemID
equals attItem.AttributeItemID
select pl;
私のLinqはあまり良くなく、DynamicQueryableクラスを使用して、実行時に「where」句を生成しようとしています(さまざまな変数から構築されています)。
var returnData = query.Where(whereClause);
「where」句はAttributeエンティティとAttributeItemエンティティの値をフィルタリングするため、常に次のようなものが含まれます。
"((Attribute.Value='foo' AND AttributeItem.Value='bar')
OR
(Attribute.Value='sna' AND AttributeItem.Value='fu'))"
「タイプ'ProductListing'にプロパティまたはフィールド'Attribute'が存在しない」ため、実行時に失敗します。
ProductListingエンティティのすべての要素と、フィルタリングする必要のあるAttributeおよびAttributeItemの要素を含む匿名型を「select」に作成しようとしましたが、メソッドから戻るには、「ProductListing」型の強く型付けされたエンティティが必要です。電話。
誰か助けてもらえますか?動的な場所の代わりに動的な結合を使用する必要がありますか?選択していないエンティティに対してWhere-ingする方法はありますか?匿名タイプ/"let"を選択し、後で強いタイプのエンティティを構築する必要がありますか?
どうぞ、どんな助けでも大歓迎です。
rposbo