Linq を使用してクエリを実行しようとしていますが、これは初めてのことです。ID の配列を受け取り、これらの ID を持つ製品を取得したいと考えています。私が得たlinqクエリはこれでした:
public Product[] RetrieveProduct(int[] ids)
{
var query = from productInfos in productRepository.Table
where (ids.Contains(productInfos.Id))
&& productInfos.Active
select new ProductIndiInfo
{
ProductId = productInfos.Id,
CurrentPrice = productInfos.CurrentPrice
};
return query.ToArray();
}
しかし、私は有名な例外を受け取り続けています:
{"型 'System.Int32[]' の定数値を作成できません。このコンテキストでは、プリミティブ型 ('Int32、String、および Guid' など') のみがサポートされています。"}
私が読んだいくつかのリソースでは、それは利用できないと言っています。しかし、他の人はそれがうまくいくはずだと私に言います。ここやブログなどで代替案を含む多くの投稿を見てきましたが、機能しません。これは構文の問題だと思い始めています...
私もこのアプローチを試しました:
var query = from productInfos in pricingInfoRepository.Table
where ids.Any(id => id == productInfos.ProductId)
&& productInfos.Active
select new PricingInfo
{
ProductId = productInfos.Id,
CurrentPrice = productInfos.CurrentPrice
};
return query.ToArray();
しかし、私は同じ問題を抱えています。
私の構文が間違っているのか、それとも本当にLinqの問題なのか、誰か教えてください。(動作未対応?)
使用している EF のバージョンを確認するにはどうすればよいですか?
更新:私が理解している限り、ids.Contains() に関するこの質問は L2S の質問ですが、考えられる答えは、EF2 がサポートしていないということです。私はそれを正しく理解していますか?