我有一个返回 id 和 name 列表的存储过程。
TeamID(字节) TeamName(字符串) ---------------------------------- 1个棒球 2 篮球
我有一个显示团队名称的下拉列表,但如果团队容量已满,则团队名称不应该在列表中。我使用这种方法获取团队列表,如果团队容量未满,则将其添加到字典中,然后返回字典。该方法如下所示:
public Dictionary<byte, string> getTeamList()
{
Dictionary<byte, int> capacityList = new Dictionary<byte, int>();
var capacityQuery = _dataContext.usp_getTeamCapacityList();
foreach(var item in capacityQuery)
{
capacityList.Add(item.TeamID, item.Capacity);
}
Dictionary<byte, string> result = new Dictionary<byte, string>();
var sports = _dataContext.usp_getSports();
foreach(var item2 in sports)
{
if(capacityList.ContainsKey(item2.TeamID)
{
int memberCount = _dataContext.usp_getNumberOfMemberPerTeam(item2.TeamID)
.FirstOrDefault().MemberCount;
if(capacityList[item2.TeamID] > memberCount)
{
result.Add(item2.TeamID, item2.TeamName);
}
}
else
{
result.Add(item2.TeamID, item2.TeamName);
}
}
}
在第二个 foreach 循环中,第一项有时有效,但我得到invalidCastException: Specified cast is not valid
. 当我注释掉第一个循环时,它工作正常,但是当我有两个循环foreach
时,我似乎得到了 invalidCastException 错误。foreach
似乎它在抱怨这部分:
int memberCount = _dataContext.usp_getNumberOfMemberPerTeam(item2.TeamID)
.FirstOrDefault().MemberCount;
MemberCount 的类型是int
。当我注释掉这行代码时它起作用了。