in

c #: uso de .Select y .Where en una sola instrucción LINQ

apple touch icon@2

Necesito reunir Distinct Id’s de una tabla en particular usando LINQ. El problema es que también necesito una declaración WHERE que debería filtrar los resultados basándose solo en los requisitos que he establecido. Relativamente nuevo en tener que usar tanto LINQ, pero estoy usando el siguiente código más o menos:

private void WriteStuff(SqlHelper db, EmployeeHelper emp)
{
    String checkFieldChange;
    AnIList tableClass = new AnIList(db, (int)emp.PersonId);
    var linq = tableClass.Items
        .Where(
           x => x.UserId == emp.UserId 
             && x.Date > DateBeforeChanges 
             && x.Date < DateAfterEffective 
             && (
                     (x.Field == Inserted)
                  || (x.Field == Deleted)))
                )
             ).OrderByDescending(x => x.Id);

    if (linq != null)
    {
        foreach (TableClassChanges item in linq)
        {
            AnotherIList payTxn = new AnotherIList(db, item.Id);
            checkFieldChange = GetChangeType(item.FieldName);

            // Other codes that will retrieve data from each item 
            // and write it into a text file
        }
    }
}

Intenté agregar .Distinct para var linq pero todavía devuelve elementos duplicados (lo que significa que tienen los mismos Id). He leído muchos sitios y he intentado agregar un .Select en la consulta, pero la cláusula .Where se rompe. Hay otros artículos en los que la consulta es de alguna manera diferente con la forma en que recupera los valores y los coloca en una var. También intenté usar .GroupBy pero obtengo un «Al menos un objeto debe implementar IComparable» cuando uso Id como clave.

La consulta realmente funciona y puedo generar los datos de las columnas con las especificaciones que necesito, pero parece que no puedo hacer que .Distinct funcione (que es lo único que realmente falta). Intenté crear dos vars con una que desencadena una llamada distinta y luego tener un foreach anidado para garantizar que los valores sean únicos, pero miles de registros para recopilar el impacto en el rendimiento es demasiado.

Tampoco estoy seguro de si tendría que anular o usar IEnumerable para mi requisito, y pensé en hacer la pregunta en caso de que haya una manera más fácil, o si es posible tener ambos .Select y .Where funcionando en una sola declaración?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

repository structure

Maven – Repositorios

Python hacer calculadora simple – javatpoint