我在排除地图类型时遇到了一些麻烦。
if (Session.Character.Level <= 30)
{
if (Session.Character.Level <= monsterToAttack.Monster.Level + 10 && Session.Character.Level >= monsterToAttack.Monster.Level - 10)
{
Session.Character.Reput += ((Session.Character.Level - monsterToAttack.Monster.Level) + monsterToAttack.Monster.Level) / 2;
Session.SendPacket(Session.Character.GenerateFd());
}
}
else if (Session.Character.Level > 30)
{
if (Session.Character.Level <= monsterToAttack.Monster.Level + 7 && Session.Character.Level >= monsterToAttack.Monster.Level - 7)
{
Session.Character.Reput += ((monsterToAttack.Monster.Level - Session.Character.Level) + monsterToAttack.Monster.Level) / 3;
Session.SendPacket(Session.Character.GenerateFd());
}
}
这是我的代码,我也需要排除一些地图,如
Session.CurrentMapInstance.Map.MapTypes
.Any(s => s.MapTypeId == (short)MapTypeEnum.GoldMapHard)
如何排除?
答案 0 :(得分:0)
如果您想过滤,即只保留符合某些条件的结果,您可以使用Where
方法。
一个例子是
var filteredResults = Session.CurrentMapInstance.Map.MapTypes.Where(s => s.MapTypeId == (short)MapTypeEnum.GoldMapHard).ToList()
稍后,您可能需要从原始集合中删除这些匹配元素。为此,您需要在Remove
集合中找到合适的MapTypes
方法并执行类似
foreach (var item in filteredResults)
{
Session.CurrentMapInstance.Map.MapTypes.Remove(item) // <-- probably requires suitable Remove() method invoked instead
}