我想使用Dynamic Linq Library NuGet从数据库中获取记录。如何为选择的父记录和子记录列表编写查询。例如,问题和答案表之间存在一对多关系。 QuestionID是Answers表中的外键列。
当我不打算使用Dynamic Linq Library NuGet时,如果我在where子句中给出列名,这非常简单。
var LinQResult=db.Questions
.Include(f=>f.Answers).Where(f=>f.Email=="someEmail").ToList();
我对上述查询毫无疑问,我可以简单地在剃刀视图或任何网络表单上呈现内容。
如果我要使用动态Linq库NuGet,我有一个字符串格式的搜索条件,如下所示,
string SearchCreteria = "Email=\"SomeValue\"";
在以下where子句中传递上述动态搜索条件,
var QueryBuilder = (from q in db.Questions
join a in db.Answers on q.QuestionID equals a.QuestionID into answer
from a in answer.DefaultIfEmpty()
select new { q,a}).Distinct().AsQueryable();
var Result = QueryBuilder.Where(SearchCreteria);
如何将上述结果转换/添加到
下面的强类型列表中List<QuestionVM> questionVM=new List<QuestionVM> ();
public class QuestionVM
{
public Question Question { get; set; }
public List<Answer> Answers { get; set; }
}
答案 0 :(得分:0)
我认为应该这样做。
var queryBuilder = (from q in db.Questions.Include(itm => itm.Answers)
join a in db.Answers on q.QuestionID equals a.QuestionID
where a.Email.equals(SearchCriteria)
select q).Distinct().ToList();
var questionVM = new List<QuestionVM>();
foreach(var q in queryBuilder)
{
questionVM.add(new QuestionVM
{
Question = q,
Answers = q.Answers.Where(itm => itm != null).Select(itm => itm.QuestionID == q.ID)
});
}