Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 Foreach内部Foreach C_C# 4.0_Foreach - Fatal编程技术网

C# 4.0 Foreach内部Foreach C

C# 4.0 Foreach内部Foreach C,c#-4.0,foreach,C# 4.0,Foreach,将值保存在foreach内部,但内部foreach将基于外部foreach。 我只想保存这两个数据,但内部foreach将以外部foreach的Model2.SRL的值为基础 string[] _stpr = {"\r\n"}; string[] _slr = Model1.SRL.Split(_stpr, RemoveEmptyEntities); string[] _chs = Model1.CHS.Split(_stpr, RemoveEmptyEntities); foreach(str

将值保存在foreach内部,但内部foreach将基于外部foreach。 我只想保存这两个数据,但内部foreach将以外部foreach的Model2.SRL的值为基础

string[] _stpr = {"\r\n"};
string[] _slr = Model1.SRL.Split(_stpr, RemoveEmptyEntities);
string[] _chs = Model1.CHS.Split(_stpr, RemoveEmptyEntities);
foreach(string _s in _slr)
{
   Model2.SRL = _s; // Test Value : SRL-1 // TotalCount = 5
   Model2.DTL = "Detail";
   Model2.CHS = string.empty;

   functionToSave(ref transaction);
   foreach(string _c in _chs)
   {
      Model2.SRL = _s; // will base on value from outer loop
      Model2.CHS = _c; // Test Value : CHS-1
      functionToSave(ref transaction);
   }
}
commit();
执行此操作时,结果是,如果有多个项,则内部foreach的最后一个值将在DB中的所有列中显示

Output Result:                          
SRL = SRL-1,    CHS = CHS-1,            
SRL = SRL-2,    CHS = CHS-1,            
SRL = SRL-3,    CHS = CHS-1,            
SRL = SRL-4,    CHS = CHS-1,            
SRL = SRL-5,    CHS = CHS-1,            
Expected Result:
SRL = SRL-1,   CHS = CHS-1
SRL = SRL-2,   CHS = CHS-2
SRL = SRL-3,   CHS = CHS-3
SRL = SRL-4,   CHS = CHS-4
SRL = SRL-5,   CHS = CHS-5

找到了答案。我只是添加了每行的增量计数器,因为它是一个数组

string[] _stpr = {"\r\n"};
string[] _slr = Model1.SRL.Split(_stpr, RemoveEmptyEntities);
string[] _chs = Model1.CHS.Split(_stpr, RemoveEmptyEntities);
int _counter = 0;
foreach(string _s in _slr)
{
   Model2.SRL = _s; // Test Value : SRL-1 // TotalCount = 5
   Model2.DTL = "Detail";
   Model2.CHS = _chs[_counter];
   _counter++;
}
commit();

您非常关注机制,而不是依赖框架来为您做苦工

这看起来是一个很好的用例。假设您有一个使用系统;此代码上方的指令:

string[] _stpr = {"\r\n"};
string[] _slr = Model1.SRL.Split(_stpr, RemoveEmptyEntities);
string[] _chs = Model1.CHS.Split(_stpr, RemoveEmptyEntities);
int _counter = 0;
foreach(var _s in _slr.Zip(_chs, (first,second) => new { first, second })
{
   Model2.SRL = _s.first;
   Model2.DTL = "Detail";
   Model2.CHS = _s.second;
}
commit();
您可以进一步改进这一点。例如,您似乎有一个Model2实例,它在每次循环中都被重用。我本以为会发生这样的事情:

_slr.Zip(_chs, (first,second) => new WhateverModel2Is
    { SRL = first, CHS = second, DTL = "Detail" })

并在每次循环中处理这些实例。

预期的行为是什么?当前的行为是什么?我更新了我的内容。感谢您提供另一个变通解决方案。@。