首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

判断,循环有关问题,高分求解!

2013-07-11 
判断,循环问题,急急急。高分求解!!需求如下:product.A 1,2,3 product.B //有可能会有数据product.C

判断,循环问题,急急急。高分求解!!
需求如下:
product.A = "1,2,3" 
product.B = ""  //有可能会有数据
product.C = ""  //有可能会有数据
product.D = "1,4, 11"
product.E = ""  //有可能会有数据
porudct.F = "4,22,24"
product.G = ""  //有可能会有数据

//假设知道produc.A, product.D, product.F有数据, 那么要做到
Foreach(string a in product.A.split(','))
{
   Foreach(string d in product.D.split(','))
   {
       Foreach(string f in product.F.split(','))
       {
           tableA tabA = new tableA();
           tabA.field1 = a;   //a对应的字段
           tabA.field2 = d;  //d对应的字段
           tabA.field3 = f;  //f对应的字段
           .
           .
           .

           tempdll.add(tabA);  //保存想要的结果
       }
   }
}

求解, 如果Prodct.A / B /C / D / E/ F 等字段值是变动的。那么怎么做循环才能保存
想要的结果数据。

问题:
    1. 要先判断Product.A 或 B 等字段的数据是否为空, 再临时保存, 然后再循环吗?

    2. Foreach语句应如何写? .net?循环问题
[解决办法]
LZ你说的变动是什么意思,你上面的ABCDF不是已经确定的了?还有就是你上面的嵌套foreach,我不知道LZ是想要达到什么结果拉,不过你这样嵌套你第一层执行一次,那么你第二次也执行一次,而你第三层则要遍历完一次,这样你第二层才会执行第二次,如上你第二层只有遍历完一边才会执行第一层第二次,这样的嵌套,LZ你确定是你自己想要的结果么?还有就是把问题说清楚点!
[解决办法]
楼主把描述再清楚一下,光看你的需求很模糊。

Foreach(string a in product.A.split(','))
       {
           tableA tabA = new tableA();
           tabA.field1 = a;   //a对应的字段


           tabA.field2 = d;  //d对应的字段
           tabA.field3 = f;  //f对应的字段
           .
           .
           .

           tempdll.add(tabA);  //保存想要的结果
       }

这样类似的代码不行吗?为什么要嵌套这么多层循环,效率低的吓人。
[解决办法]
A B C D E F G 作为Model的单独属性
每一次赋值,都应该是
product.A=1;product.B=2;product.C=3;

即每个 ProductID  对应着自己的A/B/C/D...

如果存在一对多的关系,那么可以List<Product>,也无必要再去分离


[解决办法]
我是来拿分的

private void button1_Click(object sender, EventArgs e)
        {
            Product product = new Product();
            product.A = "1,2,3";
            product.B = "";
            product.C = "";
            product.D = "1,4,11";
            product.E = "";
            product.F = "4,22,24";
            product.G = "";

            ////如果 product.A可能是null,必须先做一下判断
            //if (product.A == null)
            //{
            //    product.A = "";
            //}
            //...
            //if (product.G == null)
            //{
            //    product.G = "";


            //}

            List<tableA> tempdll = new List<tableA>();
            foreach (string a in product.A.Split(','))
            {
                foreach (string b in product.B.Split(','))
                {
                    foreach (string c in product.C.Split(','))
                    {
                        foreach (string d in product.D.Split(','))
                        {
                            foreach (string e1 in product.E.Split(','))
                            {
                                foreach (string f in product.F.Split(','))
                                {
                                    foreach (string g in product.G.Split(','))
                                    {
                                         tableA tabA = new tableA();


                                         int iFieldIndex = 1;
                                         if (product.A != "")
                                         {
                                             SetField(tabA, iFieldIndex, a);
                                             iFieldIndex++;
                                         }
                                         if (product.B != "")
                                         {
                                             SetField(tabA, iFieldIndex, b);
                                             iFieldIndex++;
                                         }


                                         if (product.C != "")
                                         {
                                             SetField(tabA, iFieldIndex, c);
                                             iFieldIndex++;
                                         }
                                         if (product.D != "")
                                         {
                                             SetField(tabA, iFieldIndex, d);
                                             iFieldIndex++;
                                         }
                                         if (product.E != "")


                                         {
                                             SetField(tabA, iFieldIndex, e1);
                                             iFieldIndex++;
                                         }
                                         if (product.F != "")
                                         {
                                             SetField(tabA, iFieldIndex, f);
                                             iFieldIndex++;
                                         }
                                         if (product.G != "")
                                         {
                                             SetField(tabA, iFieldIndex, g);


                                             iFieldIndex++;
                                         }

                                         tempdll.Add(tabA);  //保存想要的结果
                                    }
                                } 
                            }
                        }
                    }
                }
            }
        }

        private string SetField(tableA tabA, int iFieldIndex, string sValue)
        {
            string sRet = "";
            switch (iFieldIndex)
            {
                case 1:
                    tabA.field1 = sValue;
                    break;
                case 2:
                    tabA.field2 = sValue;


                    break;
                case 3:
                    tabA.field3 = sValue;
                    break;
                case 4:
                    tabA.field4 = sValue;
                    break;
                case 5:
                    tabA.field5 = sValue;
                    break;
                case 6:
                    tabA.field6 = sValue;
                    break;
                case 7:
                    tabA.field7 = sValue;
                    break;
                default:
                    break;
            }
            return sRet;
        }

热点排行