我正在尝试使用 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 不支持它。我理解正确吗?