使用两个不同的列表将值添加到新列表

时间:2018-08-09 14:57:02

标签: c# loops foreach

我有两个不同的列表,我想将这些列表的值添加到新列表中,但是我不知道如何使用循环来获取重复的值。...

[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> TurnoIList<int> DocenteId中,我有值,现在在我的List<TurnoDocente>中,我只想知道可以使用哪个周期向它们添加值...

我已经使用了两个foreach循环,但是很快就知道,通过这种方式,我可以获得重复的值,并且不会...

Result

目标只是使那些没有用红叉标记的值...

1 个答案:

答案 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]
    });
}