1

私は EF と LINQ にやや慣れていないため、基本を超えるたびに、より高度なクエリに取り組む方法について混乱し始めます。

ここに画像の説明を入力

私の例では、ユーザーが持っているレポートの数を含む、ユーザーに関連付けられたチャネルのリストを返そうとしています。以下のクエリまではありますが、レポート数を含める方法に行き詰まっています...どんな助けも大歓迎です。

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

1 に答える 1

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(),
            }
于 2012-04-26T15:46:17.927 に答える