检查复杂对象上的字符串属性是否包含术语(如果不为空或为空)
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);
我正在使用具有 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);