我敢肯定是我缺乏理解。 我有一个属于多个产品的组件。 我的控制器操作收到这样的组件:
[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() 只返回一个值。 我确实在.产品,但第二个 2 为空。
我敢肯定,只是我不明白。 应该如何做到这一点?
将 Linq 语句转换为 foreach 语句,并使用 List.Add() 手动将项添加到列表中。 然后,您可以坐在调试器旁,确切地查看正在发生的事情。
对于这些查询,您需要向后执行,首先将 id 获取到数组中,然后查询为:
int[] ids = //load the ids...
var products = (from p in Products
where ids.Contains(p.Id)
select p).ToList();
谢谢大家的回复。我只是愚蠢。问题是x => db.Products.Find(x.id)
查询错误x.id
因为它实际上是一个部件 ID,而不是产品 ID。