判断,循环问题,急急急。高分求解!!
需求如下:
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;
}