Necesita el equivalente de Linq

Ayuda para encontrar el equivalente de Linq en la siguiente consulta sql:

select sum(weight) from (
select weight from pers p
join list l on l.persindex= p.persindex
group by  p.persindex,weight) a

preguntado el 12 de junio de 12 a las 13:06

¿Qué intentaste hasta ahora? -

no olvides marcarlo como aceptado si obtuviste la información que deseas .. -

He actualizado mi respuesta con la versión de vb.net, he mirado... -

3 Respuestas

from p in context.pers  
join l in context.list on l.persindex equals p.persindex 
group by new 
{      p.persindex,
       l.weight 
} into myGroup  
select new()
{      Key = myGroup.Key,
       GroupSum = myGroup.sum(x=>x.weight)
}  

Respondido el 12 de junio de 12 a las 13:06

Supongo que eso es lo que necesitas:

public int CalcWeight(IEnumerable<Person> pers, IEnumerable<Person> list)
{
    return  
        pers
        .Join(list, p=>p.PersIndex, l=>l.PersIndex, (p, l) => new {p.PersIndex, l.Weight})
        .GroupBy( a => new {a.PersIndex, a.Weight})
        .Sum(group=>group.Key.Weight);
}

La clase de datos Person se etiqueta así:

public class Person
{
    public int PersIndex;
    public int Weight;
}

Respondido el 12 de junio de 12 a las 13:06

Versión de VB.NET

Dim customerList = From p In pers
                   Group Join l In list On 
                     p.persindex Equals l.persindex
                   Into joineddata = Group, 
                        TotalOweight = Sum(p.weight) 
                   Select p.persindex, TotalOweight 

Tratar : Herramienta de conversión Linquer SQL a LINQ : enter image description here

from p in pers 
joins l in list on  l.persindex equals p.persindex
group by new {p.persindex,l.weight } into grp
select new { sum = grp.sum(x=>x.weight)}

Respondido el 12 de junio de 12 a las 20:06

Estoy usando esto en vb.net. ¿Es diferente para vb.net? - user1451208

A continuación se muestra la consulta que estoy usando ahora, que omite algunos valores (Mismo peso) Doble = (De p En pers Unirse a l En la lista En p("persindex") Es igual a l("persindex") Seleccionar CDbl(p("Peso" ))).Distinct.Sum() Probé tu consulta pero obtuve un error en TotalOweight = Sum(p.weight) - user1451208

@ user1451208 - ahora estoy confundido con lo que realmente quieres ......... no te entiendo en absoluto - pranay rana

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.