Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
6 / 4 / 3
Регистрация: 28.10.2014
Сообщений: 149

Distinct пользовательского объекта

15.08.2020, 19:36. Показов 2778. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Не работает Distinct. Одинаковые элементы не исключаются
C#
1
2
3
4
5
6
7
    private List<Person> _Members = new List<Person>();
    public ResearchTeamEnumerator(List<Paper> publications)
    {
      foreach (var paper in publications)
        _Members.Add(paper.Author);
      _Members.Distinct();
    }
Класс Person
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
class Person : INameAndCopy, IEquatable<Person>
  {
    private string _Name;
    private string _Surname;
    DateTime _Birth;
 
    public Person(string name, string surname, DateTime birth)
    {
      _Name = name;
      _Surname = surname;
      _Birth = birth;
    }
 
    public Person()
    {
      _Name = "Иван";
      _Surname = "Болван";
      _Birth = new DateTime(2020, 8, 9);
    }
 
    public string Name
    {
      get => _Name;
      set => _Name = value;
    }
 
    public string Surname
    {
      get => _Surname;
      set => _Surname = value;
    }
        
    public DateTime Birth
    {
      get => _Birth;
      set => _Birth = value;
    }
 
    public int ChangeYear
    {
      get => _Birth.Year;
      set => _Birth.AddYears(-_Birth.Year + value);
    }
 
    public virtual string ToShortString() =>
      $"Имя: {_Name}\t Фамилия: {_Surname}";
 
    public override string ToString() =>
      $"{ToShortString()}\t" +
      $"ДР: {_Birth.ToShortDateString()}";
 
    public bool Equals(Person other)
    {
      if (other == null)
        return false;
 
      if (object.ReferenceEquals(this, other))
        return true;
 
      if (this.GetType() != other.GetType())
        return false;
 
      return other.Surname == _Surname &&
        other.Name == _Name && other.Birth == _Birth;
    }
 
    public override bool Equals(object obj)
    {
      if (obj == null)
        return false;
 
      if (ReferenceEquals(this, obj))
        return true;
 
      if (this.GetType() != obj.GetType())
        return false;
 
      return Equals(obj as Person);
    }
 
    public override int GetHashCode() =>
      _Name.GetHashCode() + _Surname.GetHashCode() + _Birth.GetHashCode();
 
    public static bool operator ==(Person p1, Person p2) =>
      p1.Equals(p2);
 
    public static bool operator !=(Person p1, Person p2) =>
      !(p1 == p2);
 
    public object Clone() =>
      new Person
      { _Name = this._Name, _Surname = this._Surname, _Birth = this._Birth };
 
  }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.08.2020, 19:36
Ответы с готовыми решениями:

Cout like: перегрузить оператор<< по примеру объекта cout для extern объекта пользовательского типа
Мне нужен extern объект по примеру cout с перегруженным оператором. Я нечто подобное сделал, только у меня выдаёт ошибку &quot;undefined...

Можно ли присвоить объекту основного типа значение объекта пользовательского типа?
Правильно ли я понимаю, что SomeClass obj; int x = obj; или SomeClass obj; int x = 5 + obj;

Как взаимодействовать со значением свойства пользовательского элемента в коде этого пользовательского элемента?
Здравствуйте. Я сделал пользовательский элемент, попытался создать в нём свойство и затем обработать его значение внутри этого элемента. Не...

21
6 / 4 / 3
Регистрация: 28.10.2014
Сообщений: 149
19.08.2020, 17:36  [ТС]
Студворк — интернет-сервис помощи студентам
Сделал как Вы подсказали, но всё равно строчка 23 порождает ошибку CS0111 Тип "ResearchTeam" уже определяет член с именем "GetEnumerator" с теми же типами параметров

Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//нет публикаций
    public IEnumerator<Person> GetEnumerator()
    {
      foreach (var paper in _Publications)
      {
        if (!_Members.Contains(paper.Author))
          yield return paper.Author;
      }
    }
 
    public IEnumerator<Paper> GetEnumerator(int year)
    {
      foreach(var paper in _Publications)
      {
        if (DateTime.Today.Year - paper.Date.Year < year)
          yield return paper;
      }
    }
 
    // дополнительное задание
    #region
    // авторы c публикациями
    public IEnumerator GetEnumerator() =>
       new ResearchTeamEnumerator(_Publications);
 
    public IEnumerator<Person> AuthorsMoreThen1Paper()
    {
      foreach (var author in _Members)
        if (_Publications.Count(p => p.Author == author) > 1)
          yield return author;
    }
 
    public IEnumerator PapersForLastYear()
    {
      foreach (var paper in _Publications)
        if (DateTime.Now.Subtract(paper.Date).Days < 365)
          yield return paper;
    }
    #endregion
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
19.08.2020, 22:49
yuriybolotin99, ну а зачем вам 20 методов с одним именем?
Сделали один для реализации интерфейса и хватит, а остальным дайте адекватные названия.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.08.2020, 22:49

distinct
Заметил, что это функция меняет исходный порядок следования в столбцах. Возможного ли ею воспользоваться, не меняя порядок следования? ...

DISTINCT
Помогите пожалуйста с DIstinct. Есть таблица TABL, у которой поля tid, tfam, tim. Пробую: SELECT distinct tfam from TABL -...

есть ли в с++ distinct?
или различные элементы двух массивов перебором искать?Спасибо.И извините если была тема

Distinct и COUNT
Добрый вечер Есть таблица с именами юзеров. Юзеры могут повторятся. Как сделать &quot;distinct(user)&quot;, но только чьи имена...

Нестандартный DISTINCT
Надо вывести из таблицы ВИД наименования, отфильтрованные по полю НОМЕР. Например если поставим условие что номер&gt;2, то выведет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru