UICommonHelper.DoDataCollect(_strongPart); _strongPart.Model.ClearErrorMessage(); IList<IUIRecord> selectedRecords = UIRuntimeHelper.Instance.GetSelectRecordFromCache(_strongPart.Model.BOMMaster_BOMComponents); if (selectedRecords.Count == 0) return; Dictionary<long, IUIRecord> dict = new Dictionary<long, IUIRecord>(); List<long> iDs = new List<long>(); string iDFieldName = UIRecordHelper.IsFieldExist(selectedRecords[0], "MainID") ? "MainID" : "ID"; foreach (IUIRecord record in selectedRecords) { long iD = UIRecordConverter.AsLong(record, iDFieldName); if (dict.ContainsKey(iD)) continue; dict.Add(iD, record); iDs.Add(iD); }
时间: 2023-02-05 20:15:35 浏览: 101
这段代码的作用是从选定的记录中提取出主键 ID,并将这些 ID 放入字典和列表中。首先,调用 `UICommonHelper.DoDataCollect` 方法进行数据收集,然后清除错误消息。接下来,使用 `UIRuntimeHelper.Instance.GetSelectRecordFromCache` 方法获取选定的记录。如果选定的记录数为 0,则直接返回。否则,创建一个字典和一个列表用于存储记录的主键 ID。然后,使用 `UIRecordHelper.IsFieldExist` 方法检查第一个记录中是否存在名为 "MainID" 的字段。如果存在,则将 iDFieldName 设为 "MainID";如果不存在,则将 iDFieldName 设为 "ID"。接下来,遍历所有选定的记录,并使用 `UIRecordConverter.AsLong` 将记录的主键转换为长整型,然后将这些 ID 添加到字典和列表中。
相关问题
将List<List<int>>转换为IList<IList<int>>
可以使用以下方法将List<List<int>>转换为IList<IList<int>>:[^1]
```csharp
List<List<int>> list = new List<List<int>>();
IList<IList<int>> iList = list.ConvertAll<IList<int>>(x => x.ToList<IList<int>>());
```
其中,我们使用了ConvertAll()方法将List<List<int>>转换为IList<IList<int>>。在这个方法中,我们首先将列表中的每个元素(即List<int>)转换为IList<int>,然后再将整个列表转换为IList<IList<int>>。这可以确保我们得到的列表类型与目标类型完全相同。
将List<List<int>>强制转换为IList<IList<int>>
要将`List<List<int>>`强制转换为`IList<IList<int>>`,只需要在实例化`IList<IList<int>>`对象时,将其元素类型设置为`List<int>`即可。可以参考以下代码实现:
```C#
List<List<int>> list = new List<List<int>>();
IList<IList<int>> iList = new List<IList<int>>();
foreach (List<int> sublist in list)
{
iList.Add(sublist);
}
```
在上述代码中,首先定义一个`List<List<int>>`类型的变量`list`,然后定义一个`IList<IList<int>>`类型的变量`iList`。接着,通过`foreach`循环遍历`list`中的每个子列表,将其加入到`iList`中,这里无需进行显式的强制类型转换,因为`List<int>`类型是`IList<int>`类型的子类。这样,`iList`就包含了`list`中的所有子列表,并且可以被视为`IList<IList<int>>`类型的对象来操作。
阅读全文