я должен заполнить в некоторых списках в то время как цикл, как:Чтение в списке с помощью SqlDataReader C#
while (_myReader_1.Read())
{
_Row_Counter++;
int _authorID = _myReader_1.GetInt32(0);
Author _author = _eAthors.FirstOrDefault(_a => _a._AuthorID == _authorID);
if (_author == null)
{
_author = new Author
{
_AuthorID = _authorID,
_AuthorName = _myReader_1.GetString(1),
_Attributes = new List<AuthorAttributes>()
};
}
var _attribute = new AuthorAttributes()
{
_PaperID = new List<int>(),
_CoAuthorID = new List<int>(),
_VenueID = new List<int>()
};
_attribute._PaperID.Add(_myReader_1.GetInt32(2));
_attribute._CoAuthorID.Add(_myReader_1.GetInt32(3));
_attribute._VenueID.Add(_myReader_1.GetInt32(4));
_attribute._Year = _myReader_1.GetInt32(5);
_author._Attributes.Add(_attribute);
_eAthors.Add(_author);
}
_myReader_1.Close();
Данные в таблице SQL выглядит следующим образом:
Author_ID | Author_Name | Paper_ID | CoAuthor_ID | Venue_ID | Year
------------------------------------------------------------------
677 | Nuno Vas | 812229 | 901706 | 64309 | 2005
677 | Nuno Vas | 812486 | 901706 | 65182 | 2005
677 | Nuno Vas | 818273 | 901706 | 185787 | 2005
677 | Nuno Vas | 975105 | 901706 | 113930 | 2007
677 | Nuno Vas | 975105 | 1695352 | 113930 | 2007
... | ... | ... | ... | ... | ...
Вопрос заключается в каждый цикл повторяется время , новые списки _PaperID
, _CoAuthorID
и _VenueID
созданы, что нежелательно. Поскольку у нас есть проверка if(author == null)
, то для создания нового автора, аналогично, я хочу проверить, существует ли список для _PaperID
для автора, например. для Author_ID = 677
, затем Добавить в тот же список до Author_ID
изменить.
Также до Author_ID = 677
, список _eAuthors
должны иметь Count = 1
Я прилагаю несколько изображений для уточнения проблемы.
Изображение 1: Показаны eAuthors
Count = 3, Attributes
Count = 3 для AuthorID = 677, в то время как 3 итераций прошло, тогда как eAuthors
графа должны = 1.
Изображение 2: Отображение отдельных списков атрибутов для каждой строки, как и в третьей итерации, атрибут eg CoAuthorID
, граф = 1, в то время как оно должно быть = 3, а в 3-й итерации и то же самое для остальной части Attributes
У этого есть серьезные проблемы. Как вы узнаете, с какими документами связан CoAuthor_ID 1695352. Или когда год переместился на 2007 год. Вам нужна более формальная структура данных. – Paparazzi
Мне нужно отследить авторов и их атрибуты, т. Е. Документ, CoAuthor и место проведения в соответствующие годы, не желательно здесь, какая бумага CoAuthor_ID 1695352 связана с – maliks
Ну, вы даже не получаете * соответствующие * Годы здесь. Почему новый автор не инициализирует этот список? Выглядит неряшливо для меня. – Paparazzi