Filtrado dinámico usando Linq

tengo unList<Device>. En elDevice clase hay 4 propiedades, a saberName, OperatingSystem, Status yLastLoggedInUser. Necesito escribir un método:

IQueryable<Device> FilterDeviceList(
    List<Device> Devices,
    List<string> filter,
    string filterValue)

dóndefilter contendrá opciones para filtrar"name", "os" para indicar los campos a incluir en la búsqueda. Si"all" se pasa, entonces se deben incluir los 4 campos.filtervalue contendrá el valor a filtrar como"windows", "Calvin".

¿Alguien puede sugerir un método para lograr esto?

Editar:

Si no estaba claro, estoy haciendo el filtrado de esta manera, es la parte comentada para la que necesito el código.

if(filter.contains(name))
{
//filter with name
}
if( filter.contains(both name and os)
{
// I only need the filter value to contain in name or OS (only needed in any one of the field,not necessary to be in both)

}`

Respuestas a la pregunta(4)

Su respuesta a la pregunta