使用两个不同的列表将值添加到新列表[关闭]

问题描述 投票:-4回答:1

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

[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

目标只是让没有红十字标记的值...

c# loops foreach
1个回答
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]
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.