Sto tentando di eseguire la seguente operazione linq. Qui espressa come SQL:Unire e raggruppare per, utilizzando DataTable e Lista <T>
SELECT
CAMPAIGN,
ADGROUPID,
CLICKS,
TOTALCONV,
COST,
COSTCONVCLICK,
KEYWORD,
COUNT(*) AS APARICIONES
FROM
ADWORDSSEARCH
GROUP BY CAMPAIGN,adgrOUPID,CLICKS,TOTALCONV,COST,COSTCONVCLICK,KEYWORD
ORDER BY CLICKS DESC
ho preso a lavorare con la seguente espressione LINQ:
var filtro =(from r in newTable.AsEnumerable()
group r by new {
camp=r.Field<string>("CAMPAIGN"),
keyw= r.Field<string>("KEYWORD")
}
into grouping
select new
{
grouping.Key.camp,
grouping.Key.keyw,
Key = grouping.Key,
NumberGroup = grouping.Count()
}).ToList()
.OrderByDescending(t=>t.NumberGroup);
Ma il problema è che nuovatabella è un DataTable ed ha un campo chiamato adgroupid che è numerico, e Devo fare un join con un elenco per sostituire l'ID numerico di AdGroupID con la sua descrizione. Questo è quello che ho provato finora:
var filtro = from r in newTable.AsEnumerable()
join anuncios in adslist.AsEnumerable()
on r.Field<string>("ADGROUPSID") equals anuncios.id.toString()
into grouping
select new
{
Campaign = r.Field<string>("CAMPAIGN"),
AdsName = anuncios.name ???? ->Here is the problem
keyword = r.Field<string>("KEYWORD"),
Counting = grouping.Count()
};