排除maptype

时间:2017-02-07 14:03:35

标签: c#

我在排除地图类型时遇到了一些麻烦。

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)

如何排除?

1 个答案:

答案 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
}