[英]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.