Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2017, 09:11   #1
ya_yanchik-2909
Пользователь
 
Регистрация: 15.11.2016
Сообщений: 62
По умолчанию Уникальность имени на Си шарп - C#

На C+ написано приложение. Есть таблица и в него загружаются данные. Вообщем у меня было прописано одно уникальное имя (ФИО), т.е. с двумя одинаковыми ФИО файл не сможет попасть в таблицу. Теперь хочу поменять 2 уникальных поля, чтобы если ФИО одинаковое попадется, то чтобы еще сравнивало номер, если номера разные, а ФИО одинаоквое, то все-равно грузилось.
Код:
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
foreach (Item i in list)
{
  if (i.fio == dataGridView1.Rows[dataGridView1.SelectedCells[0].RowIndex].Cells[1].Value.ToString())
     Process.Start(i.path);
}
}
++++++

Код:
class ItemComparer : IEqualityComparer<Item>
{
public bool Equals(Item x, Item y)
{

return (x.fio == y.fio); // Уникальное ФИО, не может повторяться//
}

public int GetHashCode(Item x) // HashCode необходим для структур данных, поддерживающих поиск по ключу. Для сравнения объектов //
{
if (Object.ReferenceEquals(x, null)) return 0;
int hash = x.fio == null ? 0 : x.fio.GetHashCode();
return hash;
}

}
Теперь когда поиск по 2 уникальным ключам, прописала так:

Код:
class ItemComparer : IEqualityComparer<Item>
{
public bool Equals(Item x, Item y)
{

return x.fio == y.fio && x.num == y.num; // Уникальное ФИО, не может повторяться//
}

public int GetHashCode(Item x) // HashCode необходим для структур данных, поддерживающих поиск по ключу. Для сравнения объектов //
{
if (Object.ReferenceEquals(x, null)) return 0;
int hashF = x.fio == null ? 0 : x.fio.GetHashCode();
int hashN = x.num == null ? 0 : x.num.GetHashCode();
return hashF^hashN;
}

}
Но ничего не происходит, все-равно не загружаются с одинаковыми ФИО, но разными номерами документы.
Может где-то еще нужно указать!

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 18.05.2017 в 09:52.
ya_yanchik-2909 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уникальность поля в DBGrid jekahm БД в Delphi 4 20.11.2010 01:59
Проверка на уникальность трёх полей AnTe SQL, базы данных 4 06.09.2010 11:04
Уникальность значения поля maks233 Microsoft Office Access 1 13.01.2009 14:14
Уникальность индекса в БД spiteful41 Помощь студентам 7 27.05.2008 01:26
Уникальность по 3 полям num8er БД в Delphi 3 09.10.2007 09:54