我有一个 CheckedListbox,其中包含一些名为 products 的表中的值。这个想法是检查与客户关联的产品。现在它确实正确保存在链接表中,但是当再次加载它时,被检查的项目没有正确加载到 CheckedListbox 中。
所以从那个链接表中,我想从一列中获取所有行。所有表都已加载到应用程序中,所以我不想使用 sql。
我试过使用 linq,但没有成功,Ids 在这里只是空的。
int[] Ids = (from m in dataset.Tables["LinkTable"].AsEnumerable()
where m.Field<int>("customerId") == customerId
select m.Field<int>("productId")).ToArray();
然后,如果我确实成功获得了这些 ID,我想获得这些主键的索引,以便我可以将正确的产品设置为checked
. 我已经厌倦了这样做,但这会给程序的其他部分带来错误,因为我正在为全局数据表设置主键。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 语句来完成,所以我最好将它们结合起来。