I have this code:
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();
Previously I had this query but now I would like to do it using 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
Can someone help by giving me some advice on where I should start with trying to do a query like this?
Update showing code used:
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();
like the first hit off SO search on google
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 something like
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)
}
soo
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()
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.