У меня есть CheckedListbox, который содержит значения из таблицы, называемой продуктом. Идея состоит в проверке продуктов, связанных с клиентом. Теперь он корректно сохраняет таблицу ссылок, но при повторной загрузке элементы, которые были проверены, не загружаются правильно в CheckedListbox.Получить текущие первичные ключи из таблицы ссылок, установить контрольный список Checkstate
Итак, из этой таблицы ссылок, где я хотел бы получить все строки из одного столбца. Все таблицы уже загружены в приложение, поэтому я не хочу использовать sql.
Я пробовал использовать linq, без каких-либо успехов, идентификаторы здесь просто пусты.
int[] Ids = (from m in dataset.Tables["LinkTable"].AsEnumerable()
where m.Field<int>("customerId") == customerId
select m.Field<int>("productId")).ToArray();
Тогда, если я не удастся получить эти идентификаторы, я хотел бы получить индексы этих первичных ключей, так что я могу установить правильные продукты для checked
. Я устал делать это так, но это дает мне ошибку в других частях программы, потому что я устанавливаю ключ Primary для глобального datatable. Datagridviews не нравится.
DataColumn[] keyColumns = new DataColumn[1];
keyColumns[0] = dataset.Tables["products"].Columns["Id"];
currentPatient.GetTheDataSet.Tables["products"].PrimaryKey = keyColumns;
foreach (int Id in Ids)
{
DataRow row = dataset.Tables["Products"].Rows.Find(Id);
int index = dataset.Tables["Products"].Rows.IndexOf(row);
clbMedications.SetItemChecked(index, true);
}
Я хотел бы сделать, что последняя часть без указания первичного ключа, я не мог найти, как это сделать в LINQ.
Я знаю, что он состоит из 2 вопросов, но, возможно, это может быть сделано только с одним выражением linq, чтобы я лучше их сочетал.
Является ли ** customerId ** определенным? –
Да, при загрузке данных от определенного клиента объект заполняется наборами данных и текущим клиентом, поэтому я могу легко использовать его в других запросах. – CularBytes