C# ToList или список добавить сделать неверный результат - PullRequest
0 голосов
/ 16 февраля 2020
var su = SysallocunitsRow<sysallocunit>(myreader);

List<sysallocunit> sul= new List<sysallocunit>();

foreach( var s in su)
{
    logger.Info("su auid is  " + s.auid);
    sul.Add(s);
}

foreach (var a in sul)
{
    logger.Info("sul unit is  " + a.auid);
}

Результат:

```
.........................
su auid is  72057594048675840
su auid is  72057594049265664
su auid is  72057594049331200
su auid is  72057594049462272
su auid is  72057594049527808
su auid is  72057594049658880

sul unit is  72057594049658880
sul unit is  72057594049658880
sul unit is  72057594049658880
sul unit is  72057594049658880
sul unit is  72057594049658880
sul unit is  72057594049658880
sul unit is  72057594049658880
sul unit is  72057594049658880
```

Я хочу преобразовать IEnumerable<T> в список, но .ToList() или List.Add() приводит к тому, что список дублирует последний и имеет неверный результат ,

Кто-нибудь знает, почему?

1 Ответ

0 голосов
/ 16 февраля 2020

Вместо добавления s в sul создайте новый объект sysallocunit и добавьте его. Изменение вашего первого foreach, как показано ниже, должно решить проблему с дублирующимися значениями.

foreach( var s in su)
{
    logger.Info("su auid is  " + s.auid);
    sul.Add(new sysallocunit(){ auid = s.auid });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...