首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Foreach inside Foreach C#

Foreach inside Foreach C#
EN

Stack Overflow用户
提问于 2019-03-06 10:49:04
回答 2查看 70关注 0票数 0

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

代码语言:javascript
复制
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的最后一个值将是数据库中的所有列。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2019-03-06 14:59:12

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

这看起来是Zip的一个很好的用例。假设您在下面的代码上有一个using System.Linq;指令:

代码语言:javascript
复制
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实例,它在每次循环中都会被重用。我希望是这样的:

代码语言:javascript
复制
_slr.Zip(_chs, (first,second) => new WhateverModel2Is
    { SRL = first, CHS = second, DTL = "Detail" })

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

票数 1
EN

Stack Overflow用户

发布于 2019-03-06 14:38:32

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

代码语言:javascript
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55014777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档