3

我是 C# 新手,尤其是 linq。

这是我的问题:

        Player Hero = new Player();
        Hero.ImageURL = LBimage.SelectedIndex.ToString();
        Hero.Name = HeroName.Text;
        Hero.HP = 200;
        Hero.HPMAX = 200;
        Hero.PosX = 3;
        Hero.PosY = 3;
        Hero.XP = 0;
        DB.Player.Add(Hero);
        Item w = new Item();
        w.ItemDamage = 100;
        w.ItemName = "Griffe de Lynx2";
        w.Player.Add(Hero);
        db.Item.Add(w);
        db.SaveChanges();

        var query = (from item in db.Item where (item.Player == Hero)select item).ToList();

        List<Item> Inventory = query;
        foreach (var item in Inventory)
        {
            MessageBox.Show(item.ItemName);
        }

我想为每个在游戏中注册的玩家创建一个库存。为此,我有 3 个表,Player、Item 和 PlayerObject。

这个想法是用两列 PlayerID 和 ObjectID 填充关系表。每次我找到一个带有播放器的项目时,我都会在其中输入项目 ID 和播放器 ID。

问题是您可以在那里看到,我无法进行查询来检索英雄拥有的物品列表。

你知道我怎么能做到这一点吗?

4

1 回答 1

0

在实体框架设计器中,确保表以多对多关系链接。当实体框架生成数据库脚本时,会自动创建所需的关系表。

在为玩家检索所有项目的代码中,请尝试以下操作。

IEnumerable<Items> itemEnum = DB.Player.Where(p=>p.PlayerID == pid).Items;
List<Items> itemList = itemEnum.ToList();

pid您希望找到其库存的玩家的 ID 在哪里。

于 2013-06-13T09:56:12.927 回答