有没有办法在这种情况下使用Linq并避免在示例中使用for循环?

时间:2019-01-27 22:15:28

标签: c#

我有以下示例代码(由于限制而删除了使用和类):

        static void Main(string[] args)
        {
            var n = int.Parse(Console.ReadLine());

            var storedElements = new SortedSet<string>();

            for (int i = 0; i < n; i++)
            {
                var command = Console.ReadLine().Split().ToList();
                //Maybe Linq above to avoid the for cycle?

                for (int k = 0; k < command.Count; k++)
                {
                    storedElements.Add(command[k]);
                }
            }

            Console.WriteLine(string.Join(" ", storedElements));
        }
    }
}

整个想法是拥有这个:

var command = Console.ReadLine().Split().ToList();

    for (int k = 0; k < command.Count; k++)
    {
                storedElements.Add(command[k]);
    }

避免。从这种意义上说,如果可能的话,我应该添加些什么来使Linq能够起作用:

storedElements.Add(Console.ReadLine()。Split()// WhatToAdd;

2 个答案:

答案 0 :(得分:2)

SortedSet具有一个称为UnionWith的方法。 因此您可以使用它代替当前循环

for (int i = 0; i < n; i++)
{
    var command = Console.ReadLine().Split().ToList();
    storedElements.UnionWith(command);
}

起初这似乎很方便,但是查看源代码,我不确定它的性能是否比原始循环更好。如果这是关键代码,请对其进行更好的测试。

答案 1 :(得分:0)

找到了:

storedElements.UnionWith(Console.ReadLine()。Split());

哈希集没有AddRange()

谢谢!