我有一组颜色名称和一个通用产品列表。我想过滤仅包含颜色名称与Sql Like运算符相同的数组中的产品的列表。例如'%Red%'。 我的代码正在
Public Class Item
Public Property ItemID() As Integer
Public Property ItemName() As String
Public Property RetailPrice() As Double
Public Property Colour() as String
End Class
Dim ColourNames() As String = {"Red", "Blue", "Black", "Green"}
Dim filteredList = (From i In listItems Where i.ItemName.Contains(ColourNames)).ToList
答案 0 :(得分:0)
编辑:我已经更新了示例,以匹配您更新的问题
根据您的示例,您似乎希望将ListItems成为包含“产品”的通用集合。
采用原始的ListItems数组并添加where()
方法以执行LINQ查询,并仅从ColourNames()数组中获取与该属性匹配的对象。
Dim ColourNames() As String = {"Red", "Blue", "Black", "Green"}
Dim FilteredList = ListItems.Where(Function(i) ColourNames.Contains(i.Colour)).ToList
Where()
方法将仅返回您指定的条件为true的对象。它遍历ListItems并评估每个当前对象(在本示例中表示为i
,因为那是您在问题中使用的,但是您可以使用任何变量名)以查看color属性是否包含在ColourNames数组中。
如果您需要contains方法不区分大小写,则只需向其添加StringComparer.InvariantCultureIgnoreCase
重载。这将更好地反映您从SQL中的LIKE获得的功能。
Dim FilteredList = ListItems.Where(Function(i) ColourNames.Contains(i.Colour, StringComparer.InvariantCultureIgnoreCase)).ToList