2012-04-26 68 views
1

我对EF和LINQ有点新鲜,每当我超越基础知识时,我开始对如何解决更高级的查询感到困惑。使用LINQ查询实体框架,我应该怎么做连接?

enter image description here

在我的例子,我试图返回与包括多少报告该用户具有计数的用户关联的频道列表。我已经尽可能的查询下面,但我坚持如何包括报告计数...任何帮助将不胜感激。

var query = from c in _channelRepository.GetTable().Include("User") 
        where c.UserId == user.Id && c.IsActive == true 
        orderby c.Name 
        select c; 

回答

1

你可以通过创建一个新的类(POCO)与你想要的所有属性来实现这一点。

例如

public class ChannelsWithCount 
{ 
    public Channel Channel { get; set; } 
    public User User { get; set; } 
    public int? ReportsCount { get; set; } 
} 

var query = from c in _channelRepository.GetTable() 
      where c.UserId == user.Id && c.IsActive == true 
      orderby c.Name 
      select new ChannelsWithCount 
      { 
       Channel = c, 
       User = c.User, 
       ReportsCount = c.User.Reports.Count(), 
      }