C# 更新所有子实体,EF/Linq

C# 更新所有子实体,EF/Linq,c#,entity-framework,linq-to-entities,C#,Entity Framework,Linq To Entities,我有两张表A和B,它们的关系是1:N。 我想更新所有子表中的一个字段,但我不知道要用什么LINQ表达式来实现这一点——应该不会太难 我的想法是: parentEntity.childrens.All(..lambda expr..).field = value; author.Books.ToList().ForEach(b => b.PublishYear = 1999); 但很明显,它不起作用 我知道另一个选项是foreach(..),但如果可能的话,我更喜欢L2E。您不能在集合的

我有两张表A和B,它们的关系是1:N。 我想更新所有子表中的一个字段,但我不知道要用什么LINQ表达式来实现这一点——应该不会太难

我的想法是:

parentEntity.childrens.All(..lambda expr..).field = value;
author.Books.ToList().ForEach(b => b.PublishYear = 1999);
但很明显,它不起作用


我知道另一个选项是foreach(..),但如果可能的话,我更喜欢L2E。

您不能在集合的所有项目上设置属性,而不通过某种方式循环该集合,可以使用
foreach
for
List.foreach
或类似的方法

如果您想将其保持在一行中,可以执行以下操作:

parentEntity.childrens.All(..lambda expr..).field = value;
author.Books.ToList().ForEach(b => b.PublishYear = 1999);

您必须循环并更新全部,或者使用通过
实体框架执行的原始
SQL
语句,这对于此类事情来说效率更高。

正如回答所示:我同意。Linq基本上是一种查询语言;这意味着在不更改集合的情况下查询集合。我会进行查询,然后作为一个单独的语句对您查询的项目进行查询。我尝试不将整个集合移动到内存中,但你们都是对的。干杯