C# LINQ连接查询中的列表
我在使用LINQ时遇到了一个问题,我想知道在存储库中是否有一个快速的代码解决方案C# LINQ连接查询中的列表,c#,linq,join,C#,Linq,Join,我在使用LINQ时遇到了一个问题,我想知道在存储库中是否有一个快速的代码解决方案 GetCompletePackQuestion(int id) { var query = from q in DbSet where q.id == id join a in DbContext.Set<answers>() on id equals a.question_id join cc in
GetCompletePackQuestion(int id)
{
var query = from q in DbSet where q.id == id
join a in DbContext.Set<answers>() on id equals a.question_id
join cc in DbContext.Set<correct_answers>() on id equals cc.question_id
select new CompletePackModel
{
Id = q.id,
Question = q.question,
CorrectAnswer = cc.answers.id,
Answers = q.answers.Select(ans => ans.answer)
};
return query.SingleOrDefault();
}
GetCompletePackQuestion(int-id)
{
var query=来自DbSet中的q,其中q.id==id
在id等于a.question\u id的DbContext.Set()中加入一个
在id等于cc.question\u id的DbContext.Set()中加入cc
选择新的CompletePackModel
{
Id=q.Id,
问题,
CorrectAnswer=cc.answers.id,
Answers=q.Answers.Select(ans=>ans.answer)
};
返回query.SingleOrDefault();
}
CompletePackModel将Answers属性作为字符串列表。。
所以问题是:一个问题有很多答案,所以当q.id是一个int时,问题是一个字符串,答案是一个id(实际上我应该取表中与该id相连的字符串)。。。最后一个答案应该是一个列表
有没有办法解决这个问题
谢谢
为什么它在查询中给我3个结果而不是1个?我假设您使用的是实体框架(基于我看到的DbContext对象)。在这种情况下,你的问题类应该已经有了答案的集合。然后,您需要执行以下操作:
select new CompletePackModel
{
Id = q.id,
Question = q.question,
CorrectAnswer = from answ in DbContext.Set<answers>() where answ.id == a.id select answ.answer,
Answers = q.answers.Select(a => a.answer).ToList()
};
选择新的CompletePackModel
{
Id=q.Id,
问题,
CorrectAnswer=来自DbContext.Set()中的answ,其中answ.id==a.id选择answ.answer,
Answers=q.Answers.Select(a=>a.answer).ToList()
};
这会奏效吗
var query = from q in DbContext.Set<questions>()
join a in DbContext.Set<answers>() on q.id equals a.question_id
join cc in DbContext.Set<correct_answers>() on q.id equals cc.question_id
select new CompletePackModel
{
Id = q.id,
Question = q.question,
CorrectAnswer = cc.answer,
Answers = DbContext.Set<answers>().Where(answ => answ.question_id == q.id).ToList()
};
var query=来自DbContext.Set()中的q
在q.id上的DbContext.Set()中加入a等于a.question\u id
在q.id等于cc.question\u id的DbContext.Set()中加入cc
选择新的CompletePackModel
{
Id=q.Id,
问题,
CorrectAnswer=cc.answer,
Answers=DbContext.Set().Where(answ=>answ.question_id==q.id).ToList()
};
是的,有q.answers,但有entityobject..但我只需要该实体的字符串字段。。。我需要一个字符串列表…编辑以获取字符串(我假设这是a.answer
,当然)我在同一代码中遇到问题。。。它给了我3个结果,而不是一个查询结果。这不应该是…问题。。。在应用SingleORDefault之前。。。它应该只是一个对象。。。因为只有一个问题……嗯。。这似乎不起作用。。。无论如何,在连接的出口处,我已经有了一组a(答案)来回答这个问题。。。从该组中,我应该去掉字符串字段……您已经在DbContext.Set()中加入了cc和CorrectAnswer
结果字段。他们应该一起去吗?