繁体   English   中英

如何使用linq to sql从三个不同的表中获取值?

[英]How do you get values from three different tables using linq to sql?

这很简单:

我有三个表:
问题:
编号(PK)
身体

问题与解答:
QuesionID
AnswerID

回答:
ID
身体
是正确的

每个都有一个对应的类:

[Table]
public class Questions  
{  
  [Column]public int ID;  
  [Column]public string Body;  
}   

[Table]      
public class QuestionsAndAnswers   
{
  [Column]public int QuestionID;
  [Column]public int AnswerID;  
}  

[Table]
public class Answers
{
  [Column]public int AnswerID;  
  [Column]public string Body;
  [Column]public bool IsCorrect;
}  

我需要回答所有问题。

我知道如何获得所有问题:

private Table<Questions> questionsTable;  
public SQLQuestionsRepository (string connString)  
{  
  questionsTable=(new DataContext(connString)).GetTable<Questions>();
}  

但是如何将特定的答案与其答案相关联?
我可以在一个命令中执行此操作,还是应该实际使用linq查询? 如果是这样,怎么办?

谢谢。

您可能想要进行联接(请注意,实际上可以使用联接LINQ方法,但在这里我不使用它):

using (var dataContext = new DataContext(connString)) {
  questionsTable=
             from q in dataContext.GetTable<Questions>()
             from a in dataContext.GetTable<Answers>()
             from qa in dataContext.GetTable<QuestionsAndAnswers>()
             where qa.QuestionID == q.QuestionID && qa.AnswerID == a.AnswerID
             select new { Question = q, Answer = a};
}

另一种选择是添加关联(导航)属性,以便您可以直接从Questions对象获得所需的信息:

[Association(Storage="QuestionsAndAnswers", OtherKey="QuestionID")]
public QuestionsAndAnswers QuestionsAndAnswers ...

然后,您只需获取问题并执行

myQuestion.QuestionsAndAnswers[0].Answer.IsCorrect

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM