选择()删除项目

时间:2011-05-21 22:30:47

标签: c# linq select

我确信这是我缺乏理解。我有一个属于多个产品的组件。我的控制器动作收到这样一个组件:

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

我确定这只是我没有得到它。应该怎么做?

3 个答案:

答案 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。杜!