c# - 引用非标量闭包 c#

标签 c# linq closures

我是 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);
        }

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

想法是用两列 PlayerID 和 ObjectID 填充关系表。每次我发现一个带有玩家的元素时,我都会在其中放入元素 ID 和玩家 ID。

问题是,正如您在上面看到的,我无法执行允许我检索英雄拥有的元素列表的查询。

你知道我该如何实现吗?

最佳答案

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

在检索玩家所有元素的代码中,尝试以下操作。

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

其中 pid 是您要查找其库存的玩家的 ID。

关于c# - 引用非标量闭包 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17083800/

相关文章:

c# - 如何同时触发客户端和 MVC 验证?

c# - 玩家移动时与子弹碰撞 - Unity UNET

c# - 按运行时已知的多个键分组

c# - 如何在 Linq 和 EF 中订购嵌套集合

javascript - 将索引从 for 循环传递到 ajax 回调函数 (JavaScript)

c# - 如何使用 float.Parse 从 "5/2"等字符串中获取小数

c# - 如何从C#的最后一行到第一行读取文本文件

c# - 无法使用 XDocument 查询 XML 文档并获得所需的结果

javascript - 'new function(){...}' 上的 JSLint 错误,但为什么呢?如果我想要匿名闭包,有没有更好的方法?

java - Java 中的闭包和不可变字符串。这个程序如何运作?