OrE*_*lse 5 c# linq entity-framework
通过使用以下
PagedData.Products = from p in db.Products
where (from m in p.Manufacturers
where model.man.Contains(m.ManufacturerID)
select m).Any()
where (from s in p.Sizes
where model.size.Contains(s.SizeID)
select s).Any()
where (from c in p.Colors
where model.color.Contains(c.ColorID)
select c).Any()
select p;
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
无法创建“System.Int32[]”类型的空常量值。此上下文中仅支持实体类型、枚举类型或基本类型。
我明白了错误的重点,但我不知道应该如何解决它。和model.man model.size是model.color整数数组,也可能为空。
由于所有条件都必须为真才能通过任何条件,因此Product您应该首先检查所有数组是否都有任何内容:
if (model.man != null && model.size != null && model.color != null
&& model.man.Any() && model.size.Any() && model.color.Any())
{
PagedData.Products = from p in db.Products ...
Run Code Online (Sandbox Code Playgroud)
现在,如果您预先知道查询无论如何都不会返回任何数据,则您将不会执行查询。并且它不会抛出异常,因为您从未使用null数组运行查询。
| 归档时间: |
|
| 查看次数: |
11306 次 |
| 最近记录: |