none
IList<List<float>>和IList<List<int>>如何合并到List<string> RRS feed

  • 问题

  • 比如

    IList<List<float>>{{ 1.1 , 2.2 , 3.3 },{ 4.4 , 5.5 , 6.6 },{ 7.7 , 8.8, 9.9 }}
    IList<List<int>>{{ 1 , 2 , 3 },{ 4 , 5 , 6 },{7 , 8 , 9}}
    合并为:
    List<string>{ 1 , 1.1 , 2 , 2.2 , 3 , 3.3 , 4 , 4.4 , 5 , 5.5 , 6 , 6.6 , 7 , 7.7 , 8 , 8.8 , 9 , 9.9 }

    zhangwei


    • 已编辑 ZSDN 2012年7月26日 3:44 文本改为代码,更直观
    2012年7月26日 2:00

答案

  • class Program
        {
            static void Main(string[] args)
            {
     
                List<List<double>> number1 = new List<List<double>>() { new List<double> { 1.1, 2.2, 3.3 }, new List<double> { 4.4, 5.5, 6.6 }, new List<double> { 7.7, 8.8, 9.9 } };
     
                List<List<int>> number2 =
                    new List<List<int>>() { new List<int> { 1, 2, 3 }, new List<int> { 4, 5, 6 }, new List<int> { 7, 8, 9 } };
     
                List<string> strings = new List<string>();
     
                for (int i = 0; i < number2.Count; i++)
                {
                    for (int j = 0; j < number2.Count; j++)
                    {
                        strings.Add(number2[i][j].ToString());
                        strings.Add(number1[i][j].ToString());
                    }
                }
     
                foreach (var item in strings)
                {
                    Console.WriteLine(item);
                }
            }
        }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 ZSDN 2012年7月27日 0:20
    2012年7月26日 7:49

全部回复

  • 你如果用3.5或者以上的版本,直接使用Union即可:

      IList<List<float>> l1 = new List<List<float>> { new List<float>(){ 1.1f, 2.2f, 3.3f },new List<float>{ 4.4f, 5.5f, 6.6f },new List<float>{ 7.7f, 8.8f, 9.9f } };
                IList<List<int>> l2 = new List<List<int>> { new List<int>() { 1, 2, 3 }, new List<int>() { 4, 5, 6 }, new List<int>() { 7, 8, 9 } };
                var result = l1.SelectMany(collection => collection).Select(c => c.ToString()).Union(l2.SelectMany(collection=>collection).Select(c=>c.ToString()));
              
                foreach (var item in result)
                {
                    Console.WriteLine(item);
                }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年7月26日 3:20
  • 首先,谢谢你的回答,但是我没用过lambda啊?

    zhangwei

    2012年7月26日 3:28
  • 运行结果不是我想要的啊!!!!!!!!!!!!!!


    zhangwei

    2012年7月26日 3:35
  • 你的Framework版本是不是3.5或者以上的?请用以上的进行编译。

    另外请说话不要用“!”,这样我认为你在发脾气或者不耐烦,别人是义务帮助你,希望谅解。

    如果你不是3.5(而是2.0什么的版本),那么只能逐一遍历List,然后手动添加了):

    另外请使用VS对代码进行编译和运行。

    class Program
        {
            static void Main(string[] args)
            {
                IList<List<float>> l1 = new List<List<float>> { new List<float>() { 1.1f, 2.2f, 3.3f }, new List<float> { 4.4f, 5.5f, 6.6f }, new List<float> { 7.7f, 8.8f, 9.9f } };
                IList<List<int>> l2 = new List<List<int>> { new List<int>() { 1, 2, 3 }, new List<int>() { 4, 5, 6 }, new List<int>() { 7, 8, 9 } };
     
                List<string> strings = new List<string>();
     
                foreach (List<float> item in l1)
                {
                    foreach (var n in item)
                    {
                        strings.Add(n.ToString());
                    }
                }
     
                foreach (List<int> item in l2)
                {
                    foreach (var m in item)
                    {
                        strings.Add(m.ToString());
                    }
                }
     
                //strings就是你需要的
            }
        }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年7月26日 3:58
  • 我按照你的代码编译还是不行啊,运行结果和我上一张图片描述的结果一样!

    可我用的的确是.net 3.5啊


    zhangwei

    2012年7月26日 4:44
  • 你的Framework版本是不是3.5或者以上的?请用以上的进行编译。

    另外请说话不要用“!”,这样我认为你在发脾气或者不耐烦,别人是义务帮助你,希望谅解。

    如果你不是3.5(而是2.0什么的版本),那么只能逐一遍历List,然后手动添加了):

    另外请使用VS对代码进行编译和运行。

    class Program
        {
            static void Main(string[] args)
            {
                IList<List<float>> l1 = new List<List<float>> { new List<float>() { 1.1f, 2.2f, 3.3f }, new List<float> { 4.4f, 5.5f, 6.6f }, new List<float> { 7.7f, 8.8f, 9.9f } };
                IList<List<int>> l2 = new List<List<int>> { new List<int>() { 1, 2, 3 }, new List<int>() { 4, 5, 6 }, new List<int>() { 7, 8, 9 } };
     
                List<string> strings = new List<string>();
     
                foreach (List<float> item in l1)
                {
                    foreach (var n in item)
                    {
                        strings.Add(n.ToString());
                    }
                }
     
                foreach (List<int> item in l2)
                {
                    foreach (var m in item)
                    {
                        strings.Add(m.ToString());
                    }
                }
     
                //strings就是你需要的
            }
        }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    这是我要的结果:1 , 1.1 , 2 , 2.2 , 3 , 3.3 , 4 , 4.4 , 5 , 5.5 , 6 , 6.6 , 7 , 7.7 , 8 , 8.8 , 9 , 9.9

    zhangwei

    2012年7月26日 4:45
  • 唉,麻烦你一次性把问题说清楚好不?你看你头一次的提问,都不给结果的……:(

     static void Main(string[] args)
            {
                IList<List<float>> l1 = new List<List<float>> { new List<float>() { 1.1f, 2.2f, 3.3f }, new List<float> { 4.4f, 5.5f, 6.6f }, new List<float> { 7.7f, 8.8f, 9.9f } };
                IList<List<int>> l2 = new List<List<int>> { new List<int>() { 1, 2, 3 }, new List<int>() { 4, 5, 6 }, new List<int>() { 7, 8, 9 } };
     
                List<string> strings = new List<string>();
     
                foreach (List<float> item in l1)
                {
                    foreach (var n in item)
                    {
                        strings.Add(n.ToString());
                    }
                }
     
                foreach (List<int> item in l2)
                {
                    foreach (var m in item)
                    {
                        strings.Add(m.ToString());
                    }
                }
     
                strings.Sort();
     
                foreach (var item in strings)
                {
                    Console.WriteLine(item);
                }
            }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年7月26日 5:04
  • 这次结果是正确,但是,如果我的数字是混乱的,那么结果还正确?

    比如:{123,456,258,496,}和{12.5,547.2,895.4,1246.0}

    我说的对吧?

    我想要的结果是这样的

    list1和list2插入到list时,list1是在list的偶数下标位置,list2是在list的奇数下标位置


    zhangwei


    • 已编辑 ZSDN 2012年7月26日 5:31
    2012年7月26日 5:28
  •  List<int> numbers1 = new List<int>{ 123, 456, 258, 496 };
                List<double> numbers2 = new List<double>{ 12.5, 547.2, 895.4, 1246.0 };
                List<string> strings = new List<string>();
     
                for (int i = 0; i < numbers1.Count; i++)
                {
                    strings.Add(numbers2[i].ToString());
                    strings.Add(numbers1[i].ToString());
                }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已编辑 ThankfulHeart 2012年7月26日 5:45
    • 已标记为答案 ZSDN 2012年7月26日 5:51
    • 取消答案标记 ZSDN 2012年7月26日 8:35
    2012年7月26日 5:29
  • 不能排序的,每个list中的数据都是相对应的,如果排序的话,会造成混乱的!

    zhangwei

    2012年7月26日 5:35
  • 不能排序的,每个list中的数据都是相对应的,如果排序的话,会造成混乱的!

    zhangwei

    你没有把问题说清楚了!

    请看我上面的代码@


    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年7月26日 5:47
  • 恩,这种方法可以!谢谢啊!

    zhangwei

    2012年7月26日 5:51
  • 恩,这种方法可以!谢谢啊!

    zhangwei


    不用谢!以后一次性说明问题更好了

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年7月26日 5:52
  • 不能排序的,每个list中的数据都是相对应的,如果排序的话,会造成混乱的!

    zhangwei

    你没有把问题说清楚了!

    请看我上面的代码@


    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    对了,我的类型是

    IList<List<float>>{{ 1.1 , 2.2 , 3.3 },{ 4.4 , 5.5 , 6.6 },{ 7.7 , 8.8, 9.9 }}
    IList<List<int>>{{ 1 , 2 , 3 },{ 4 , 5 , 6 },{7 , 8 , 9}}

    那么该怎么写呢?


    zhangwei

    2012年7月26日 5:57
  • class Program
        {
            static void Main(string[] args)
            {
     
                List<List<double>> number1 = new List<List<double>>() { new List<double> { 1.1, 2.2, 3.3 }, new List<double> { 4.4, 5.5, 6.6 }, new List<double> { 7.7, 8.8, 9.9 } };
     
                List<List<int>> number2 =
                    new List<List<int>>() { new List<int> { 1, 2, 3 }, new List<int> { 4, 5, 6 }, new List<int> { 7, 8, 9 } };
     
                List<string> strings = new List<string>();
     
                for (int i = 0; i < number2.Count; i++)
                {
                    for (int j = 0; j < number2.Count; j++)
                    {
                        strings.Add(number2[i][j].ToString());
                        strings.Add(number1[i][j].ToString());
                    }
                }
     
                foreach (var item in strings)
                {
                    Console.WriteLine(item);
                }
            }
        }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 ZSDN 2012年7月27日 0:20
    2012年7月26日 7:49