Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改嵌套列表子级中变量的值_C#_Entity Framework_Linq - Fatal编程技术网

C# 如何更改嵌套列表子级中变量的值

C# 如何更改嵌套列表子级中变量的值,c#,entity-framework,linq,C#,Entity Framework,Linq,对于实体框架、LINQ和C来说,我是新手,不知道如何更改嵌套列表中变量的值。我知道LINQ不是用来更新对象的,但我在某个地方读到,你可以用某种方式来做,这就是我在这里尝试的。我对任何解决方案都很满意 假设我们有两个列表,myData包含当月的数据,myDataBefore包含上月的相同列表。我想更新我的数据。更具体地说,我想更改SQL,您可以说更新列表中所有1级子级的valuePrevMonth和DeltaperContentage,其他所有内容都应该保持不变。我尝试了以下方法,但没有达到预期效

对于实体框架、LINQ和C来说,我是新手,不知道如何更改嵌套列表中变量的值。我知道LINQ不是用来更新对象的,但我在某个地方读到,你可以用某种方式来做,这就是我在这里尝试的。我对任何解决方案都很满意

假设我们有两个列表,myData包含当月的数据,myDataBefore包含上月的相同列表。我想更新我的数据。更具体地说,我想更改SQL,您可以说更新列表中所有1级子级的valuePrevMonth和DeltaperContentage,其他所有内容都应该保持不变。我尝试了以下方法,但没有达到预期效果

var myChildren=myData.SelectManyx=>x.children.ToList; myChildren中的foreach var child { var valuePrevMonth=myDataBefore.SelectManyx=>x.children 其中x=>x.PositionId==child.PositionId&& x、 SubPositionId==child.SubPositionId .Selectx=>x.Value.FirstOrDefault; //现在是回写步骤,我可能弄糟了 myData.SelectManyx=>x.children .x=>x.PositionId==child.PositionId&& x、 SubPositionId==child.SubPositionId .Selectx=>{ x、 previousValue=ValuePreviousMonth; x、 deltaPercentage=x.Value-valuePrevMonth/valuePrevMonth;//可能一些IF-NULL检查不会有什么影响 返回x; }托利斯特先生; } 最后一个。选择。。是我目前对如何更新给定子对象的这两个值的理解

一些背景 我的嵌套列表采用以下格式请允许我使用某种伪代码进行定义:

我的数据 { int?位置ID 字符串位置名 int子位置ID 字符串子位置名称 对象儿童 十进制值 十进制?以前的值 十进位 } 工具书类 -query表示读而不是写的引号来自那里 -我的另一个问题把我引向了这个问题
我的第一个想法是,您的第二个语句以.SelectManyx=>x开头,可能不需要儿童;如果我读对了,您要更新的内容已经在子变量中,因此您只需执行以下操作:

child.previousValue = valuePrevMonth;
...
也就是说,myObject类型是结构还是类可能很重要;如果它是一个结构,更新它的字段将不会做您想要做的事情,因为您将操作一个副本。要更新结构列表的元素,必须获得所需的更新结构值,例如,通过在值的副本上设置字段,然后使用List[x]=updatedValue;更新整个列表元素