LINQ表达式结果隐含于继承对象

时间:2012-07-18 12:01:02

标签: c# linq entity-framework .net-4.0

我有一个文档对象和用户对象,由Entity Framework Model Generator生成。

我想获得文档列表,以及根据此文档创建的 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

2 个答案:

答案 0 :(得分: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并设置适当的属性。

答案 1 :(得分: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() };