visual tutorial programaciĆ³n not introduccion espaƱol consultas consulta con c# sql linq group-by having

tutorial - select linq to entities c#



Sql a la dificultad de Linq-agrupar, tener (1)

Tengo la siguiente consulta en SQL que me gustaría convertir a LINQ:

select profile_id from t where child_id in (1, 2 ,3, ...) //this will be a list of integers CHILDREN group by profile_id having count(distinct child_id) = 3

Tengo una dificultad para escribir la última línea de mi consulta sql en linq. El siguiente es mi trabajo hasta ahora:

public IQueryable<ProfileChildRelationship> GetPCRelByCids(List<int> children) { var query = from pcr in this._entities.ProfileChildRelationships where children.Contains(pcr.pcChildIDF) group pcr by pcr.pcProfileIDF into g ??? having ...? select pcr; return query; }

Creo que el principal problema es que muchos convierten un enunciado sql en un enunciado donde linq, pero en mi caso no creo que sea posible escribir otro en el que después del grupo por declaración linq.

Actualizar:

La situación: tengo varios hijos, cada uno de los cuales tiene muchos perfiles diferentes (algunos pueden ser los mismos). Un usuario seleccionará un número de hijos, del cual me gustaría derivar sus perfiles comunes. Es decir, si el perfil X se encuentra para CADA niño, entonces lo obtendré, si el perfil Y se encuentra para cada niño, excepto uno, ¡de lo contrario no sería válido!


Parece que quieres una cláusula Where aquí ...

var query = from pcr in this._entities.ProfileChildRelationships where children.Contains(pcr.pcChildIDF) group pcr by pcr.pcProfileIDF into g where g.Select(x => x.ChildId).Distinct().Count() == 3 select g.Key; // This is the profile ID