繁体   English   中英

如何使用计数和左连接编写 LINQ 查询?

[英]How can I code a LINQ query with a count and a left join?

我有这个代码:

public class DeckOccurrences
{
    public string DeckGuid { get; set; }
    public int Count { get; set; }
}

public class Deck
{
    public string DeckGuid { get; set; } 
    public string Name     { get; set; }  
}

public class DeckSource
{
    public string DeckGuid { get; set; } 
    public string Name     { get; set; }  
}

var decks = App.EF.Db2.Deck.ToList();
var decksources = App.EF.Db2.DeckSource.ToList();

以前我有这个查询,但现在我想使用 LINQ 来做:

select  d.deckguid, count(de.deckguid) as Count 
from decksource d 
left join deck de on d.deckguid = de.deckguid group by d.deckguid

有人可以给我一些建议,告诉我应该从哪里开始尝试进行这样的查询吗?

更新显示使用的代码:

        List<DeckOccurrences> res = (from d in App.EF.Db2.DeckSource
                                     join de in App.EF.Db2.Deck on d.DeckSourceId equals de.DeckGuid into j1
                                     from j2 in j1.DefaultIfEmpty()
                                     group j2 by d.DeckSourceId into grouped
                                     select new DeckOccurrences()
                                     {
                                         DeckGuid = grouped.Key,
                                         Count = grouped.Count(t => t.DeckGuid != null)
                                     }).ToList();

就像第一次在谷歌上进行 SO 搜索一样

from p in context.ParentTable
join c in context.ChildTable on p.ParentId equals c.ChildParentId into j1
from j2 in j1.DefaultIfEmpty()
group j2 by p.ParentId into grouped
select new { ParentId = grouped.Key, Count = grouped.Count(t=>t.ChildId != null) }

soo之类的

from d in decksource
join de in deck on d.deckguid equals de.ChildParentId into j1
from j2 in j1.DefaultIfEmpty()
group j2 by d.deckguid into grouped
select new { 
    deckguid = grouped.Key,
    Count = grouped.Count(t=>t.deckguid != null) 
}

var res = (from d in App.EF.Db2.Decksource
        join de in App.EF.Db2.Deck on d.deckguid equals de.ChildParentId into j1
        from j2 in j1.DefaultIfEmpty()
        group j2 by d.deckguid into grouped
        select new { 
            deckguid = grouped.Key,
            Count = grouped.Count(t=>t.deckguid != null) 
        }).ToList()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM