1

我有一个由实体框架模型生成器生成的Document对象和User对象。

我想获取文档列表,以及根据此文档创建的userCount 。

所以,我创建了新对象DocumentWithUserCount

public class DocumentWithUserCount:Document
{
    public uAmount {get;set}
}

和 LINQ 保留数据(下面的代码,我需要你的帮助):

    var ed = (from d in _entity.Document
     join p in _entity.User[get DocID and count by this docID ] on d.RID equals p.DocID         
select new DocumentWithUserCount(xxxx)).ToList();

这该怎么做?

编辑: 只是我想用 LINQ 做下面的等效代码。

    SELECT d.*, p.* from Document d INNER JOIN (select docid, count(RID) as uAmount from User
    GROUP BY DocID) p ON d.RID=p.docid
4

2 回答 2

1

这不起作用吗?

var documentWithUserCount =
    from Document d in _entity.Document
    join p in _entity.User on d.RID equals p.DocID
    select new DocumentWithUserCount(d, p.Count());

在 DocumentWithUserCount 中添加构造函数如下

public DocumentWithUserCount(Document doc, int count) : base(d)
{
    uAmount = count;
}

在 Document 中添加一个构造函数,它将接受一个 Document 并设置适当的属性。

于 2012-07-18T13:04:50.553 回答
1

我认为继承在这里是错误的工具。改用合成。而且不清楚你是否需要加入,应该有一个导航属性:

var eds = from d in _entity.Document       
   select new { Document=d, UserCount=d.Users.Count() };  // anon type

或者

public class DocumentWithUserCount  //:Document
{
    public Doucument { get; set; }
    public int Amount {get;set}
}
var eds = from d in _entity.Document       
   select new DocumentWithUserCount { Document=d, Amount=d.Users.Count() };
于 2012-07-18T13:57:21.717 回答