检查复杂对象上的字符串属性是否包含术语(如果不为空或为空)

Check if string properties on a complex object contain term if not null or empty

我正在使用具有 3 个属性的搜索 Class:机器、动作、零件。
搜索页面有 3 个文本框控件供用户搜索这些属性。是否有一种有效的方法来搜索这些包含值的属性的任意组合?
因此,用户可以搜索所有 3 个属性或属性的任意组合(如果它们不为 null 或为空)。

我正在构建基于上述内容使用 EF 查询数据库的逻辑。

我通过以下方式(作为扩展方法)做这些事情:

public static IQueryable<MyClass> Filter(this IQueryable<MyClass> items, string machineQuery, string actionQuery, string partQuery)
{
    if (!String.IsNullOrWhiteSpace(machineQuery)
        items = items.Where(i => i.Machine.Contains(machineQuery);

    if (!String.IsNullOrWhiteSpace(actionQuery)
        items = items.Where(i => i.Action.Contains(actionQuery);

    if (!String.IsNullOrWhiteSpace(partQuery)
        items = items.Where(i => i.Part.Contains(partQuery);

    return items;
}

这是由 EF 转换为 DB 端查询。然后你可以像这样使用它:

var filteredItems = dbContext.MyClasses.Filter(machineQuery, actionQuery, partQuery);