我有两个不同的列表,我想将这些列表的值添加到新列表中,但是我不知道如何使用循环来获取重复的值。...
[HttpPost]
public async Task<IActionResult> Create(IList<Turno> Turno, IList<int> DocenteId)
{
var turnodocente = new List<TurnoDocente>();
foreach(var item in Turno)
{
foreach(var ite in DocenteId)
{
turnodocente.Add(new TurnoDocente
{
TurnoId = item.TurnoId,
DocenteId = ite
});
}
}
HttpResponseMessage responsemeta = await HttpRequestBuilder.WebApiClient.PostAsJsonAsync("api/TurnoDocente", turnodocente);
responsemeta.EnsureSuccessStatusCode();
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
在IList<Turno> Turno
和IList<int> DocenteId
中,我有值,现在在我的List<TurnoDocente>
中,我只想知道可以使用哪个周期向它们添加值...
我已经使用了两个foreach
循环,但是很快就知道,通过这种方式,我可以获得重复的值,并且不会...
目标只是使那些没有用红叉标记的值...
答案 0 :(得分:1)
您可以在添加之前测试列表中是否存在条目。
using System.Linq;
...
foreach(var item in Turno)
{
foreach(var ite in DocenteId)
{
if (!turnodecente.Any(x => x.TurnoId == item.TurnoId && x.DocenteId == ite))
{
turnodocente.Add(new TurnoDocente
{
TurnoId = item.TurnoId,
DocenteId = ite
});
}
}
}
或者,您可以在建立列表后直接删除重复项:
turnodecente = turnodecente.Distinct();
如果您的两个列表是一对一关联,则可以尝试
for (int i = 0; i < Turno.Count; i++)
{
turnodocente.Add(new TurnoDocente
{
TurnoId = Turno[i].TurnoId,
DocenteId = DocenteId[i]
});
}