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