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.

Cómo buscar una propiedad relacionada de un modelo a través de un modelo de vista de búsqueda.

Soy nuevo en MVC y en los modelos de vista. Tengo problemas para generar una consulta de búsqueda LINQ en una propiedad relacionada de mi modelo de búsqueda. Aquí está mi modelo de MaterialRequestMaster en la capa de dominio:

“`c#
public class MaterialRequestMaster : BaseDomain<long>
{
public string RequestCode { get; private set; }
public int UserId { get; private set; }
public GlobalEnums.MaterialRequestStatus Status { get; set; }
public SecurityUser User { get; private set; } // propiedad relacionada
}

<pre><code><br />y un MaterialRequestMasterSearchViewModel en la capa de aplicación:

“`c#
public class MaterialRequestMasterSearchModel
{
public string RequestCode { get; set; }
public GlobalEnums.MaterialRequestStatus Status { get; set; }
public string UserName { get; set; }
public DateTime CreationDate { get; set; }
}

que contiene el nombre del usuario en lugar del ID de usuario, y tengo un servicio para crear una cadena de búsqueda de la consulta LINQ donde recibo el JSON de los parámetros de búsqueda desde la vista.
¿Cómo puedo buscar MaterialRequestMasters según el campo del nombre de usuario?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para buscar MaterialRequestMasters en el campo de nombre de usuario, necesitarás unir la entidad MaterialRequestMaster con la entidad SecurityUser en la propiedad UserId, y luego filtrar los resultados basados en la propiedad UserName de la entidad SecurityUser. Aquí tienes un ejemplo de consulta LINQ que puedes utilizar:

    c#
    var query = dbContext.MaterialRequestMasters
    .Include(m => m.User)
    .Where(m => (string.IsNullOrEmpty(searchModel.RequestCode) || m.RequestCode.Contains(searchModel.RequestCode))
    && (searchModel.Status == null || m.Status == searchModel.Status)
    && (string.IsNullOrEmpty(searchModel.UserName) || m.User.UserName.Contains(searchModel.UserName))
    && (searchModel.CreationDate == null || m.CreationDate.Date == searchModel.CreationDate.Value.Date));

    Esta consulta utiliza el método Include para cargar de forma rápida la entidad SecurityUser relacionada, y luego utiliza el método Where para filtrar los resultados basados en los parámetros de búsqueda. Ten en cuenta que la propiedad UserName se accede a través de la propiedad User de la entidad MaterialRequestMaster.

Comments are closed.