在我看来,有一个数据表包含ServerRow
4 个文本框(主机名、操作系统、位置、区域)的集合。当用户输入 4 个框中的任何一个时,我想立即过滤此列表。我有这个代码设置,并准备在我调用过滤器方法的每个文本框属性的 set 方法上进行。
现在问题来了:如果我有 4 个标准,这意味着我有 4 个不同场景的 2 次方。我想做的是编写一个处理所有这些场景的 linq 语句,这样如果有任何属性,NullOrEmpty
它们将不会在Where
子句中使用,另一方面,如果有值,则将搜索相应的字段带一个Contains
。
例子
AvailableCis = New ObservableCollection(Of ServerRow)
(_CiData.Where(Function(ci) ci.OS.ToUpper
.Equals(_selectedOS.ToUpper) AndAlso
ci.HostName.ToUpper.Contains(_ciNameFilterText.ToUpper))
.OrderBy(Function(a) a.CiName))
此示例显示了它如何与 2 个条件一起工作,并且设置了这两个条件。