我确信这是我缺乏理解。我有一个属于多个产品的组件。我的控制器动作收到这样一个组件:
[HttpPost] public ActionResult Create(Component model)
来自以下形式的组件部分ID:
<input type="hidden" name="Products[0].Part.Id" value="3" />
<input type="hidden" name="Products[1].Part.Id" value="5" />
<input type="hidden" name="Products[2].Part.Id" value="2" />
我需要在数据库中查找这些值并充实产品:
model.Products = model.Products.Select(x => db.Products.Find(x.Id)).ToList();
然而,当上面的运行时,我最终只有一个项目被充实,就好像.Select()只返回一个值。我在.Products中仍然有3个元素,但第二个2是null。
我确定这只是我没有得到它。应该怎么做?
答案 0 :(得分:1)
将Linq语句转换为foreach语句,并使用List.Add()手动将项目添加到列表中。然后,您可以与调试器坐在一起,看看到底发生了什么。
答案 1 :(得分:1)
对于那些需要向后执行的查询,首先将ID放入数组中,然后查询为:
int[] ids = //load the ids...
var products = (from p in Products
where ids.Contains(p.Id)
select p).ToList();
答案 2 :(得分:0)
谢谢大家的回复。我只是傻了。问题是x => db.Products.Find(x.id)
是错误的查询,因为x.id
实际上是部件ID,而不是产品ID。杜!