选择() 放置项目

本文关键字:项目 选择 | 更新日期: 2023-09-27 17:57:06

我敢肯定是我缺乏理解。 我有一个属于多个产品的组件。 我的控制器操作收到这样的组件:

[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。