[英]Convert LINQ written in VB.NET to C#
我正在尝试将以下VB.NET代码转换为C#:
stacks.AddRange(
From bin In UpstreamBinNames
Where bin <> BinName(BeforeTrack)
Select binWall = ConfigGlobals.Bins(bin).Wall
From aStack In binWall.Stacks Select aStack)
我得到了第一部分,但后半部分变得令人困惑。 如果没有LINQ,我怎么能重写呢?
谢谢。
会是这样的(原谅使用C#,但你应该得到这个想法):
foreach(var bin in UpstreamBinNames)
{
if(bin != BinName(BeforeTrack)
{
var binWall = ConfigGlobals.Bins(bin).Wall;
foreach(var aStack in binWall.Stacks)
{
stacks.Add(aStack);
}
}
}
就像是:
var tmpStacks = new List<Stack>();
foreach(var bin in UpstreamBinNames)
{
if (bin != BinName(BeforeTrack))
{
var binWall = ConfigGlobals.Bins(bin).Wall;
foreach (var aStack in binWall.Stacks)
tmpStacks.Add(aStack);
}
}
stacks.AddRange(tmpStacks);
这个怎么样? 使用SelectMany
选择所有堆栈。
stacks.AddRange(UpstreamBinNames
.Where(bin=> bin != BinName(BeforeTrack))
.SelectMany(s=>ConfigGlobals.Bins(bin).Wall.Stacks)
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.