我正在使用两个列表作为控制器上的方法参数,但是现在我遇到了问题...例如,我有第一个包含三个对象的列表,第二个包含三个对象的列表。知道吧,我只是想从第一个列表中获取每个对象,从第二个列表中获取对应的对象..例如[0]-[0]; [1]-[1]; [2]-[2] ...
我使用两个foreach来迭代每个列表,但是问题出在我从Turno列表转到第二个对象之后,因为在此之后,当我开始DocenteId List的迭代时,迭代从[0]对象开始,但实际上我不想让DocenteId的第一个对象再次出现,但是第二个...
我拥有的if子句只是因为我无法重复Turno列表对象附带的TurnoId值...当DocenteId列表带有相同的值(如object [0] -1; object [ 1] -1;对象[1] -2;我希望发生这种情况,但我只想在turnodocente列表上获得三个值,所以这是我只能切换Turno对象而不是DocenteId对象的问题。我的方法现在发生的情况是结果带有三个值,但是foreach Turno对象我总是得到DocenteId列表的第一个对象值,我不想要那个。...
存在某种获取方式吗?
我会很感激您的帮助...
控制器方法
foreach (var item in Turno)
{
foreach (var ite in DocenteId)
{
if (!turnodocente.Any(x =>x.TurnoId == item.TurnoId))
{
turnodocente.Add(new TurnoDocente
{
TurnoId = item.TurnoId,
DocenteId = ite
});
}
}
}
答案 0 :(得分:0)
我不知道我是否完全理解您的问题,但是,如果两个列表的对象数相同,我认为解决方案可能是这样的:
for(int i=0; i<Turno.Count(); i++)
{
turnodocente.Add(new TurnoDocente
{
TurnoId = Turno[i],
DocenteId = DocenteId[i]
});
}
让我知道它是否对您有帮助。
编辑:我只是想解释一下可能会很好。在另一个foreach中使用foreach时,索引的迭代如下所示: 0-0、0-1、0-2 ... 1-0、1-1、1-2 ...等,因此基本上存在一个*迭代。您只需要在两个列表中进行一次迭代,因此“ for”循环是一个不错的选择,因为您将从两个具有相同索引的列表中获取对象。我希望它很聪明:)
答案 1 :(得分:0)
考虑到两个列表中的对象数量相同;
var Turno = new List<int>() {1000, 2000, 3000};
var DocenteId = new List<int> {5000, 6000, 7000};
var turnodocente = new List<KeyValuePair<int, int>>();
for (int i = 0; i < Turno.Count; i++)
{
if (turnodocente.All(x => x.Key != Turno[i]))
{
turnodocente.Add(new KeyValuePair<int, int>(Turno[i], DocenteId[i]));
Console.WriteLine(turnodocente[i].Key +" " + turnodocente[i].Value);
}
}
答案 2 :(得分:0)
听起来像您可能需要Enumerable.Zip
async sqlExecute(sql,params = {}){
try{
return await this.db.executeSql(sql,params);
}catch(err){
return Promise.reject(err);
}
}