Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#中的LINQ从localdb获取数据时出现问题_C#_List_Linq - Fatal编程技术网

使用C#中的LINQ从localdb获取数据时出现问题

使用C#中的LINQ从localdb获取数据时出现问题,c#,list,linq,C#,List,Linq,我正在开发一个web服务,它使用一个数据库(在开发过程中,我使用内置的vs localdb)来填充我编写的数据结构(数据结构工作正常,项目已经进行了一段时间) 我有3个类:实例、令牌和变量(实际上只是一个字符串列表,用于测试): 实例 名称:string ModelId:string 令牌:列表 DbToken Id:Int 实例:DbInstance 位置:字符串 变量:列表 DbVariable Id:字符串 名称:string 值:字符串 数据库有3个表:实例(这是主表)、令牌和变量

我正在开发一个web服务,它使用一个数据库(在开发过程中,我使用内置的vs localdb)来填充我编写的数据结构(数据结构工作正常,项目已经进行了一段时间)

我有3个类:实例、令牌和变量(实际上只是一个字符串列表,用于测试):

  • 实例 名称:string ModelId:string 令牌:列表
  • DbToken Id:Int 实例:DbInstance 位置:字符串 变量:列表
  • DbVariable Id:字符串 名称:string 值:字符串
数据库有3个表:实例(这是主表)、令牌和变量

我想获得数据库中存储的所有实例对象的列表,因此我需要获取实例中的每个对象,并包括标记变量中的数据。这不是数据结构或数据库的问题,很可能只是缺乏对LINQ的理解(很多时候没有使用LINQ,这对我来说有点困难),因为我有其他函数访问数据库,例如单实例对象,它们可以工作

表中有数据,在调试期间,我可以在表中看到它(想发布屏幕截图,但我还没有10个代表)

这是我当前尝试获取所有实例的方式:

var getList=GovContext.Instance.Include(a=>a.ModelId==model.Name).Include(b=>b.Tokens.ToList()

检索数据库中所有实例列表的正确查询是什么?(顺便说一句,这已经适用于单实例对象,这是另一个函数)

这是我关于stackoverflow的第一个问题,如果我能改进我的提问方式,请让我知道:)

我不是这方面的专家(而且我在回答问题方面也相对较新),但请尝试:


它现在按预期工作:

var getList = GovContext.Instance.Where(a => a.ModelId == model.Name)
             .Include(b => b.Tokens).ToList()

LINQ Include将只采用导航属性名称,但为什么会出现条件
Include(a=>a.ModelId==model.Name)
GovContext.Instance.Where(a=>a.ModelId==model.Name).Include(b=>b.Tokens.ToList()
应该可以做到这一点。使用
.Where(x=>x.Name==“Test”)
可以使用Where子句中的谓词过滤所有实例对象。在本例中,将返回名为“Test”的所有实例对象。如果希望所有实例对象都不进行筛选,只需省略
.Where()
。例如:
GovContext.Instance.Include(b=>b.Tokens).ToList()
@QuestGamer7省略
。Where()
。Include()
。您需要Include从实例对象访问您的令牌。@QuestGamer7它现在可以正常工作了吗?“FirstorDefault”只返回一个对象。这可能对单个实例有效,但我已经在另一个函数中对单个实例进行了有效查询:
GovContext.Instance.Include(inst=>inst.Tokens)。其中(inst=>inst.Name==instanceId&&inst.ModelId==ModelId).FirstOrDefault()
如果你能自己回答的话,这是添加答案的正确方法。只需将它标记为答案,你就成功地完成了关于StackOverflow的第一个问题。顺便说一句,欢迎使用SO;)@Rabban非常感谢你:D,谢谢你的帮助!遗憾的是,我不得不等两天才能把它标记为答案,但我想这背后有一定的原因。期待我的下一个问题:P
var getList = GovContext.Instance.Where(a => a.ModelId == model.Name)
             .Include(b => b.Tokens).ToList()