先把5个list放到一个arraylist里去,然后剩下的不过就是循环一下

解决方案 »

  1.   

    代码可以参考:
    把所有数组都添加到一个动态数组中, 然后在这一个动态数组中, 随机出3个数字.
    //实例化随机函数
    Random rand = new Random();   
    private void button1_Click(object sender, EventArgs e)
    {
       int[] hearts = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
       int[] spades = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
       int[] diamonds = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
       int[] clubs = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
       //创建动态数组
       ArrayList list = new ArrayList();
       //循环把4个int[]数组添加到动态数组list中
       foreach (int i in hearts)
       {
          list.Add(i);
       }
       foreach (int i in spades)
       {
          list.Add(i);
       }
       foreach (int i in diamonds)
       {
          list.Add(i);
       }
       foreach (int i in clubs)
       {
          list.Add(i);
       }
       //按照list的元素数量, 循环随机出三个数: list[随机数]
       for (int i = 0; i < 3; i++)
       {
          MessageBox.Show(list[rand.Next(0, list.Count - 1)].ToString());
       }
    }
      

  2.   

    var query = from x in list1
    from y in list2.Concat(list3).Concat(list4).Concat(list5)
    select x + "&" + y;
    foreach (string item in query) Console.WriteLine(item);
      

  3.   

    按条件检索数组中的匹配元素
    private string[] G_str_array;//定义字符串数组字段
    //显示数组字段
     private void Frm_Main_Load(object sender, EventArgs e)
            {
                G_str_array = new string[] {//为字符串数组字段赋值
                "张小三一班","王小五二班","李中立三班","席桂璐四班"};
                for (int i = 0; i < G_str_array.Length; i++)//循环输出字符串
                {
                    lab_Message.Text += G_str_array[i] + "\n";
                }
            }
    //匹配字符串
     private void txt_find_TextChanged(object sender, EventArgs e)
            {
                if (txt_find.Text != string.Empty)//判断查找字符串是否为空
                {
                    string[] P_str_temp = Array.FindAll//使用FindAll方法查找相应字符串
                        (G_str_array, (s) => s.Contains(txt_find.Text));
                    if (P_str_temp.Length > 0)//判断是否查找到相应字符串
                    {
                        txt_display.Clear();//清空控件中的字符串
                        foreach (string s in P_str_temp)//向控件中添加字符串
                        {
                            txt_display.Text += s + Environment.NewLine;
                        }
                    }
                    else
                    {
                        txt_display.Clear();//清空控件中的字符串
                        txt_display.Text = "没有找到记录";//提示没有找到记录
                    }
                }
                else
                {
                    txt_display.Clear();//清空控件中的字符串
                }
            }
      

  4.   

    这个方法只能查询到第一个数组跟第二个数组的排列 list1 & list2
      

  5.   

    这个方法只能查询到第一个数组跟第二个数组的排列 list1 & list2怎么可能,当然包括list3 ist4 list5
      

  6.   

    基本上,选2个就是双重for循环搞定,3个就3重
    如果是不定个数,可以做个递归,把个数当做参数传进去
      

  7.   

    这个方法只能查询到第一个数组跟第二个数组的排列 list1 & list2如果我用  5个数组匹配三组  这样感觉就不够吃了!
      

  8.   

    这个方法只能查询到第一个数组跟第二个数组的排列 list1 & list2如果我用  5个数组匹配三组  这样感觉就不够吃了!那是你自己没有说清楚。你给的例子里面哪里有3个的?如果要3个的,你需要再加一个循环。
      

  9.   

     这个方法只能查询到第一个数组跟第二个数组的排列 list1 & list2怎么可能,当然包括list3 ist4 list5
    如果我要匹配   list1  list2  list3  list4  list5   然后从中找所有三个三个匹配的  怎么做呢?   上面的那个方法  貌似对两组很给力   做一个list循环,但是如果做三个匹配,该怎么做呢?
      

  10.   

    这个方法只能查询到第一个数组跟第二个数组的排列 list1 & list2怎么可能,当然包括list3 ist4 list5
    如果我要匹配   list1  list2  list3  list4  list5   然后从中找所有三个三个匹配的  怎么做呢?   上面的那个方法  貌似对两组很给力   做一个list循环,但是如果做三个匹配,该怎么做呢?贴出你的测试用例。否则写了半天你又说不是那么回事。
      

  11.   

    这个方法只能查询到第一个数组跟第二个数组的排列 list1 & list2如果我用  5个数组匹配三组  这样感觉就不够吃了!那是你自己没有说清楚。你给的例子里面哪里有3个的?如果要3个的,你需要再加一个循环。其实我现在做的就是彩票的形式。之前都是在网上找的js来计算注数等等竞彩足球有场次一说,如果我选择10场比赛。我选择5串1,我得计算出多少注,并且拆分成每一场比赛   这样拆分。求大神教我。对于计算方面,我感觉自己比小白还小白了。这里面包含了数组排列的问题    什么 10选五   10*9*8*7*6/5*4*3*2*1  这样的计算方式
      

  12.   


    这个方法只能查询到第一个数组跟第二个数组的排列 list1 & list2怎么可能,当然包括list3 ist4 list5
    如果我要匹配   list1  list2  list3  list4  list5   然后从中找所有三个三个匹配的  怎么做呢?   上面的那个方法  貌似对两组很给力   做一个list循环,但是如果做三个匹配,该怎么做呢?贴出你的测试用例。否则写了半天你又说不是那么回事。就是竞彩足球,竞彩篮球的计算方法,拆分的场次比赛方法,有什么路子
      

  13.   

    这个方法只能查询到第一个数组跟第二个数组的排列 list1 & list2如果我用  5个数组匹配三组  这样感觉就不够吃了!那是你自己没有说清楚。你给的例子里面哪里有3个的?如果要3个的,你需要再加一个循环。其实我现在做的就是彩票的形式。之前都是在网上找的js来计算注数等等竞彩足球有场次一说,如果我选择10场比赛。我选择5串1,我得计算出多少注,并且拆分成每一场比赛   这样拆分。求大神教我。对于计算方面,我感觉自己比小白还小白了。这里面包含了数组排列的问题    什么 10选五   10*9*8*7*6/5*4*3*2*1  这样的计算方式参考我写的
    http://bbs.csdn.net/topics/390550326至于彩票,我不感兴趣。这只是穷人梦想发财的三大陷阱(另外两个是股票和传销)之一。
      

  14.   


    不是啊,你理解错误了,我不是做彩票发财的,购买彩票要计算注数,买10场比赛,选择过关方式  N串N,然后计算出一共多少注,多少场,并不是说做BUG或者那种投机者的白日梦啊!
      

  15.   


    不是啊,你理解错误了,我不是做彩票发财的,购买彩票要计算注数,买10场比赛,选择过关方式  N串N,然后计算出一共多少注,多少场,并不是说做BUG或者那种投机者的白日梦啊!不知道你的M"串"N的串是什么意思。我的意思是,你得负责把你们彩票里面的术语翻译成我们能理解的意思。
    如果是M选N,参考我之前贴出的链接里的代码。
      

  16.   


    不是啊,你理解错误了,我不是做彩票发财的,购买彩票要计算注数,买10场比赛,选择过关方式  N串N,然后计算出一共多少注,多少场,并不是说做BUG或者那种投机者的白日梦啊!不知道你的M"串"N的串是什么意思。我的意思是,你得负责把你们彩票里面的术语翻译成我们能理解的意思。
    如果是M选N,参考我之前贴出的链接里的代码。
    OK  好的,我重新细说一次,现在呢  用户选择出一些集合  list 1  list2  list3  list4 list5  当然  可能不止这么写list  所以我把这么list的count数称为 N
    然后用户又选择了 要从N中选择4个串在一起   这个意思就是比如说list1 {张三,李四}; list2{你,我};list3{人};list4{食物,材料};list5{x,y} .....listN{d,s};
      
    那么所谓的串就是
    张三&你&人&食物      张三&我&人&材料   张三&你&人&材料  张三&我&人&食物
    李四&你&人&食物。
    张三&你&人&x
    李四 &我&人&x就是要找这么些东西,找出匹配结果!  这就是所谓的串。不知道大神能否指一条明路!
      

  17.   

    是不是对list先做m选n,然后求所选集合的笛卡尔积?
      

  18.   


    不是啊,你理解错误了,我不是做彩票发财的,购买彩票要计算注数,买10场比赛,选择过关方式  N串N,然后计算出一共多少注,多少场,并不是说做BUG或者那种投机者的白日梦啊!不知道你的M"串"N的串是什么意思。我的意思是,你得负责把你们彩票里面的术语翻译成我们能理解的意思。
    如果是M选N,参考我之前贴出的链接里的代码。
    当然了,可能不是选择四个,有可能是五个 有可能是6个,这个数字不固定,我可以定义为 M   意思就是  N串MN是集合的个数   M是串的场次数,这个可能相对复杂点!
      

  19.   


    不是啊,你理解错误了,我不是做彩票发财的,购买彩票要计算注数,买10场比赛,选择过关方式  N串N,然后计算出一共多少注,多少场,并不是说做BUG或者那种投机者的白日梦啊!不知道你的M"串"N的串是什么意思。我的意思是,你得负责把你们彩票里面的术语翻译成我们能理解的意思。
    如果是M选N,参考我之前贴出的链接里的代码。
    当然了,可能不是选择四个,有可能是五个 有可能是6个,这个数字不固定,我可以定义为 M   意思就是  N串MN是集合的个数   M是串的场次数,这个可能相对复杂点!
    只要你能把你要做什么说清楚,就不复杂。问题就是你自己说不清楚。而且你也不能用数学方法或者测试用例来精确描述你的问题。
      

  20.   


    不是啊,你理解错误了,我不是做彩票发财的,购买彩票要计算注数,买10场比赛,选择过关方式  N串N,然后计算出一共多少注,多少场,并不是说做BUG或者那种投机者的白日梦啊!不知道你的M"串"N的串是什么意思。我的意思是,你得负责把你们彩票里面的术语翻译成我们能理解的意思。
    如果是M选N,参考我之前贴出的链接里的代码。
    当然了,可能不是选择四个,有可能是五个 有可能是6个,这个数字不固定,我可以定义为 M   意思就是  N串MN是集合的个数   M是串的场次数,这个可能相对复杂点!
    只要你能把你要做什么说清楚,就不复杂。问题就是你自己说不清楚。而且你也不能用数学方法或者测试用例来精确描述你的问题。
    其实我也不知道咋描述,我之前一直不玩彩票的,最近在这个公司上班,现在要解析这些东西,我也只能求助大神们了!
      

  21.   

    百度百科里的笛卡尔乘积,竟然有C#源码程序使用说明(1)将每个维度的集合的元素视为List<string>,多个集合构成List<List<string>> dimvalue作为输入
    (2)将多维笛卡尔乘积的结果放到List<string> result之中作为输出
    (3)int layer, string curstring只是两个中间过程的参数携带变量
    (4)程序采用递归调用,起始调用示例如下:
    List<string> result = new List<string>();
    Descartes.run(dimvalue, result, 0, "");
    即可获得多维笛卡尔乘积的结果。PS:代码没测试过,仅供参考using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Text;
    using System.Linq;
    public class Descartes
    {
    public static void run(List<List<string>> dimvalue, List<string> result, int layer, string curstring)
    {
    if (layer < dimvalue.Count - 1)
    {
    if (dimvalue[layer].Count == 0)
    run(dimvalue, result, layer + 1, curstring);
    else
    {
    for (int i = 0; i < dimvalue[layer].Count; i++)
    {
    StringBuilder s1 = new StringBuilder();
    s1.Append(curstring);
    s1.Append(dimvalue[layer][i]);
    run(dimvalue, result, layer + 1, s1.ToString());
    }
    }
    }
    else if (layer == dimvalue.Count - 1)
    {
    if (dimvalue[layer].Count == 0) result.Add(curstring);
    else
    {
    for (int i = 0; i < dimvalue[layer].Count; i++)
    {
    result.Add(curstring + dimvalue[layer][i]);
    }
    }
    }
    }
    }
      

  22.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<List<string>> lists = new List<List<string>>()
                {
                    new List<string>() { "张三", "李四" },
                    new List<string>() { "你", "我" },
                    new List<string>() { "人" },
                    new List<string>() { "食物", "材料" },
                    new List<string>() { "x", "y" },
                    new List<string>() { "d", "s" }
                };
                List<IEnumerable<List<string>>> query = SelectNFromM(lists, 3);
                foreach (IEnumerable<List<string>> item in query)
                {
                    IEnumerable<IEnumerable<string>> query1 = CartesianProduct<string>(item.ToList());
                    foreach (var item1 in query1)
                    {
                        Console.WriteLine(string.Join("&", item1));
                    }
                }
            }        static List<IEnumerable<T>> SelectNFromM<T>(List<T> data, int n)
            {
                int[] are = Enumerable.Range(0, data.Count).ToArray();
                var result = are.Select(x => new int[] { x });
                for (int i = 0; i < n - 1; i++)
                {
                    result = result.SelectMany(x => are.Where(y => y.CompareTo(x.First()) < 0).Select(y => new int[] { y }.Concat(x).ToArray()));
                }
                return result.Select(x => x.Select(y => data[y])).ToList();
            }        static IEnumerable<IEnumerable<T>> CartesianProduct<T>(List<List<T>> source)
            {
                List<T[]> result = source[0].Select(x => new T[] { x }).ToList();
                for (int i = 1; i < source.Count; i++)
                {
                    if (i == source.Count) break;
                    result = result.SelectMany(x => source[i].Select(y => x.Concat(new T[] { y }).ToArray())).ToList();
                }
                return result;
            }
        }
    }
      

  23.   

    张三&你&人
    张三&我&人
    李四&你&人
    李四&我&人
    张三&你&食物
    张三&你&材料
    张三&我&食物
    张三&我&材料
    李四&你&食物
    李四&你&材料
    李四&我&食物
    李四&我&材料
    张三&人&食物
    张三&人&材料
    李四&人&食物
    李四&人&材料
    你&人&食物
    你&人&材料
    我&人&食物
    我&人&材料
    张三&你&x
    张三&你&y
    张三&我&x
    张三&我&y
    李四&你&x
    李四&你&y
    李四&我&x
    李四&我&y
    张三&人&x
    张三&人&y
    李四&人&x
    李四&人&y
    你&人&x
    你&人&y
    我&人&x
    我&人&y
    张三&食物&x
    张三&食物&y
    张三&材料&x
    张三&材料&y
    李四&食物&x
    李四&食物&y
    李四&材料&x
    李四&材料&y
    你&食物&x
    你&食物&y
    你&材料&x
    你&材料&y
    我&食物&x
    我&食物&y
    我&材料&x
    我&材料&y
    人&食物&x
    人&食物&y
    人&材料&x
    人&材料&y
    张三&你&d
    张三&你&s
    张三&我&d
    张三&我&s
    李四&你&d
    李四&你&s
    李四&我&d
    李四&我&s
    张三&人&d
    张三&人&s
    李四&人&d
    李四&人&s
    你&人&d
    你&人&s
    我&人&d
    我&人&s
    张三&食物&d
    张三&食物&s
    张三&材料&d
    张三&材料&s
    李四&食物&d
    李四&食物&s
    李四&材料&d
    李四&材料&s
    你&食物&d
    你&食物&s
    你&材料&d
    你&材料&s
    我&食物&d
    我&食物&s
    我&材料&d
    我&材料&s
    人&食物&d
    人&食物&s
    人&材料&d
    人&材料&s
    张三&x&d
    张三&x&s
    张三&y&d
    张三&y&s
    李四&x&d
    李四&x&s
    李四&y&d
    李四&y&s
    你&x&d
    你&x&s
    你&y&d
    你&y&s
    我&x&d
    我&x&s
    我&y&d
    我&y&s
    人&x&d
    人&x&s
    人&y&d
    人&y&s
    食物&x&d
    食物&x&s
    食物&y&d
    食物&y&s
    材料&x&d
    材料&x&s
    材料&y&d
    材料&y&s
    Press any key to continue . . .
      

  24.   

    大神  如果我固定  几个list必须显示,怎么整呢?例子还是哪个例子    加入  我固定了   list1 必须出现,怎么整?  l
      

  25.   

     没有搞懂在哪里过滤,如果是字符过滤的话,可能会出现问题,万一  list1里面有list3里面的字符 ,这样就麻烦了、
    大神,你说的第一步过滤是怎么过滤?