LINQ C#为什么价值变动
轻松地说,为什么这两个qqq
是在断点不同? TodayInformation
和YesterdayInformation
其实都是类型List<MyClass>
LINQ C#为什么价值变动
这是非常奇怪的是,作为平时,YesterdayInformation
无法通过这个部分的任何变化,但实际上YesterdayInformation
更新为TodayInformation
我从来没有使用任何pointer
或reference
?
var qqq = YesterdayInformation;
var TodayInformation = YesterdayInformation;
TodayInformation.Select(o =>
{
o.Signal = SignalpairList.Where(p => p.pair == o.pair).Select(p => p.signal).First();
o.SigmaMove = SigmaMovepairList.Where(p => p.pair == o.pair).Select(p => p.SigmaMove).First();
o.Date = Today;
return o;
}).ToList();
qqq = YesterdayInformation;
由于TodayInformation
和YesterdayInformation
是相同的附图。您有一个TodayInormation
的查询,但您修改了每个项目的.Select
方法。您的查询不一样的东西:
var TodayInformation = YesterdayInformation;
foreach(var o in TodayInformation)
{
//you are modifying each item of TodayInformation collection
o.Signal = SignalpairList.Where(p => p.pair == o.pair).Select(p => p.signal).First();
o.SigmaMove = SigmaMovepairList.Where(p => p.pair == o.pair).Select(p => p.SigmaMove).First();
o.Date = Today;
}
我想你想要这样的:
var TodayInformation = YesterdayInformation;
var result = TodayInformation.Select(o => new
{
Signal = SignalpairList.Where(p => p.pair == o.pair).Select(p => p.signal).First(),
SigmaMove = SigmaMovepairList.Where(p => p.pair == o.pair).Select(p => p.SigmaMove).First(),
Date = Today
}).ToList();
这个查询遍历集合TodayInformation
,将数据加载到一个匿名对象,而无需修改原始项目,并设置结果列表变成一个变量。
@ Danny Chen是否意味着在C#中每个'='都使用'reference'不喜欢C++中的'='? – user6703592
这取决于。如果引用类型为“a = b”,则分配引用。对于值类型,'='复制值。 –
'TodayInformation'和'YesterdayInformation'实际上是'List
我不完全确定你在说什么或问,但代码原型基本上是一个循环更新项目。
这将更清晰,并且等同于您的代码。
var TodayInformation = YesterdayInformation;
foreach (var oin TodayInformation) {
o.Signal = SignalpairList.Where(p => p.pair == o.pair).Select(p => p.signal).First();
o.SigmaMove = SigmaMovepairList.Where(p => p.pair == o.pair).Select(p => p.SigmaMove).First();
o.Date = Today;
}
我不确定你在这里问什么。请澄清 – Kenneth