繁体   English   中英

在vb.net中使用数组值过滤通用列表

[英]Filter generic list with array values in vb.net

我有一个颜色名称数组和一个通用产品列表。 我想过滤仅包含颜色名称与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

编辑:我更新了我的示例以匹配您更新的问题

根据您的示例,您似乎希望将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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM