繁体   English   中英

将用VB.NET编写的LINQ转换为C#

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM