在C#中将2个本地字符串数组合并成一个数组

3
我们从两台客户端电脑接收到两个字符串,发送给我们的第三台服务器电脑。这些数组目前是一维的。我们需要将resultanswer数组中的每个成员相加,并输出第三个数组。然而,我们将它们用作本地变量string[]
我们如何将answerresult的值添加到单个数组中。 例如:
answer[0]+result[0]= final[0]

..........

answer[76]+result[76]=final[76]

更新了代码

    namespace ExampleLib.Server
{

    public class Server
    {
        string[] answer = new string[77];
        string[] result = new string[77];


    private void ClientReceiveData(object sender, ConnectedClient.NetDataEventArgs e)
    {
        if (string.IsNullOrEmpty(e.Message) == false)
        {
        if (e.ID == 0)
                {
                    answer = e.Message.Split(',');
                }

                if (e.ID==1)
                {
                    result = e.Message.Split(',');                    
                }
                var final = answer.Zip(result, (x, y) => x + y).ToArray();

                Trace.WriteLine(String.Join(Environment.NewLine, final));

            }
        }
    }

更新1(使用Zip方法): 在此输入图像描述

(说明:本段内容为IT技术方面的翻译,介绍了使用Zip压缩方法进行更新的方式。)

你是指数组的长度还是它成员的值的长度? - Jay Tailor
1
有很多方法可以做到这一点。你可以用LINQ在一行代码中完成,但如果你是C#的新手,那可能不会帮助你学到更多。"老派"的方法是创建一个合适大小的新数组,然后使用for循环根据现有数组填充它。然而,目前还有另一个设计问题:你需要在接收到它们时保存接收到的数组,否则你每次只能拥有一个数据片段。 - Jon Skeet
@DaisyShipton 只是想澄清一下,我们接收到的字符串是来自客户端计算机的TCP/IP流,使用for循环仍然有效吗? - Jay Tailor
当您获得包含预期数据的字符串数组时,如何获取它们是完全无关紧要的。 - Jon Skeet
我有点困惑...你在 e.ID == 0 和 e.ID == 1 上运行了相同的东西...为什么不将这两个条件合并成一个呢?输出结果只是每个字符串重复一遍。这是你的意图吗? - AotN
显示剩余4条评论
1个回答

8
尝试使用Zip方法,就像这样:
var final = answer.Zip(result, (x, y) => x + y).ToArray();

4
如果您正在使用 Zip,为什么还要单独选择每个部分?您可以在 lambda 表达式中自由进行任何操作,因此您可以轻松地将此语句简化为:var final = answer.Zip(result, (x, y) => x + y).ToArray(); - Jon Skeet
由于answerresult都在两个不同的if循环中声明,我应该把Zip方法放在哪里? - Jay Tailor
如果它们在不同的循环中声明,您只需在循环外声明它们并在其中填充即可。 - stasiaks
我们在 if 循环之外声明了变量,例如 string[] answer = new string[77];string[] result = new string[77];。然而,当我们像这样打印最终字符串时 Trace.WriteLine(String.Join(Environment.NewLine, final));,我们看到结果并排显示,并且数组没有被添加。我将在我的问题中添加一张结果截图。 - Jay Tailor
我认为这里的问题与字符串组合无关,而是因为根据你的代码,你只有answerresult。这里没有循环,因为e.ID既不能为0也不能为1,所以你无法同时获取两者。你需要先从两个客户端获取数据,将其传递给其他方法,然后再进行组合。 - stasiaks
我明白了,好的我们会修改代码以便能够合并字符串。 - Jay Tailor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接