es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe un “no igual” en una unión de Linq?

Estoy intentando lograr la consulta LINQ a continuación, pero necesito un “no igual” en lugar de igual, quiero agregar una lista de clubes a los que los miembros no se han unido, en lugar de IDClub igual a i.ID, quiero que IDClub sea “no igual” a i.ID.

int IdTvien = Convert.ToInt32(Session["UserId"]);
List<member> memBer = db.Member.ToList();
List<club> Club = db.Club.ToList();
List<memberclub> memberClub = db.MemberClub.ToList();
var memBRecord = from e in memberClub
join d in memBer on e.IDMember equals IdTvien into table1
from d in table1.ToList()
join i in Club on e.IDClub equals i.ID into table2
from i in table2.ToList()
select new ViewModel
{
MemberClub = e,
Member = d,
Club = i
};

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr la consulta LINQ deseada con “no igual” en lugar de “igual”, puedes modificar la consulta existente de la siguiente manera:

    int IdTvien = Convert.ToInt32(Session["UserId"]);
    List<member> members = db.Member.ToList();
    List<club> clubs = db.Club.Where(c => !c.Members.Select(m => m.ID).Contains(IdTvien)).ToList();
    List<member_club> member_clubs = db.Member_Club.ToList();
    var memberClubRecords = from mc in member_clubs
                            join m in members on mc.IDmemBer equals IdTvien into table1
                            from m in table1.ToList()
                            join c in clubs on mc.IDClub equals c.ID into table2
                            from c in table2.ToList()
                            select new ViewModel
                            {
                                Member_Club = mc,
                                Member = m,
                                Club = c
                            };
    

    Aquí, hemos agregado una nueva cláusula where a la lista clubs para seleccionar solo los clubes en los que el usuario actual (IdTvien) no se ha unido. Luego, actualizamos la cláusula join para los clubes (i en la consulta original) para usar la lista clubs en su lugar, y reemplazamos el operador equals con el método not contains. Finalmente, hemos cambiado los nombres de las variables para mejorar la legibilidad.

Comments are closed.