EF:对单个表使用into语句

时间:2019-06-25 13:34:23

标签: c# entity-framework entity-framework-5

例如,使用EF5,我可以这样做:

var result = (from p in entity.person
             join d in entity.dept on p.IdDept equals d.Id
             into dp from d in DefaultIfEmpty()
             select {
                 IdPerson = p.Id,
                 Depts = dp.Select(r => r.DepName).Distinct()
             }).ToList()

这只是一个丑陋的示例,但效果很好,使用'into dp'使我可以操纵结果并进行自己的分组,而不必使用'group by'语句。

现在假设我只有一个表,并且我想使用into语句:

var result = (from p in entity.person into pp ...
                 select {
                     something = pp.Select(r=> ...
             }).ToList()

在使用单个表时,此处的in语句给出了编译错误:

  

查询主体必须以select子句或group子句结尾

有人可以向我解释为什么吗?

1 个答案:

答案 0 :(得分:0)

我不确定您要在这里实现什么,但是根据我的经验,在linq中,into语句通常用于左连接。对于单个表,您可以再次直接使用实体,例如:

var result = (from p in entity.person
             select {
                 something = entity.person.Select(r=> ...
         }).ToList()