我有一个文档对象和用户对象,由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
答案 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() };