2

我有一个查询可以获取有关工作的信息:

    var jobs = db.jobs.Include(d => d.docs)
                      .Where(o => o.officeid == 2);
    return View(jobs.ToList());

这很好用,但是,我还必须以某种方式添加以下查询,以便我可以在 .cshtml 页面上打印额外的“字数”值列。

    SELECT SUM(docs.words) FROM docs 
    LEFT OUTER JOIN reviewer ON docs.reviewerid = reviewer.reviewerid 
    WHERE docs.docid = 1111 AND reveiwer.type = 'student'

因此,简而言之,第一个 lambda 查询中的所有作业数据都需要在表中打印出来......但是,最后一个查询需要转换为 lambda 形式并与原始 lambda 查询相结合,以便每个文档的字数被添加到作业对象模型中。

这就是我所拥有的,但它不起作用:

    var jobs = db.jobs.Include(d => d.docs)
                      .Include(r => r.docs)
                      .Sum(s => s.docs.words)
                      .Where(o => o.officeid == 2);
    return View(jobs.ToList());

请问这样做的正确方法是什么?非常感谢!

4

1 回答 1

0

也许尝试这样的事情:

public class Job
{
    public List<Doc> Docs;
}

public class Doc
{
    public int Words;
}

List<Job> Jobs = new List<Job> { 
    new Job { Docs = new List<Doc> { new Doc { Words = 5 }, new Doc { Words = 10} } }, 
    new Job { Docs = new List<Doc> { new Doc { Words = 5 } } }
};

var res = Jobs.Select(x => new { Jobs = x, Cnt = x.Docs.Sum(y => y.Words) });

并创建一个包含作业及其字数的 ViewModel 以发送到您的视图而不是对象列表。

于 2013-07-11T06:31:46.203 回答