C# 按字符串数组筛选列表

C# 按字符串数组筛选列表,c#,winforms,C#,Winforms,我有一个WinForms应用程序,我想在其中使用文本框接收搜索查询,例如男士黑色T恤,然后根据此搜索查询筛选对象列表 对象列表是对象的顺序。每个订单对象都有几个属性,如性别、大小、颜色等 如果通过按空格字符分割搜索查询来获得字符串数组,那么根据列表中每个order对象的每个属性搜索此字符串数组中的每个项并返回与字符串数组中所有字符串匹配的项的最佳方法是什么 例如,如果我搜索kids black-medium,我只想返回kids和black-medium的订单,因此我不会只想要black订单或ki

我有一个WinForms应用程序,我想在其中使用文本框接收搜索查询,例如男士黑色T恤,然后根据此搜索查询筛选对象列表

对象列表是对象的顺序。每个订单对象都有几个属性,如性别、大小、颜色等

如果通过按空格字符分割搜索查询来获得字符串数组,那么根据列表中每个order对象的每个属性搜索此字符串数组中的每个项并返回与字符串数组中所有字符串匹配的项的最佳方法是什么

例如,如果我搜索kids black-medium,我只想返回kids和black-medium的订单,因此我不会只想要black订单或kids订单等。

尝试以下操作:

class Item
{
    public bool Gender { get; set; }
    public int Color { get; set; }
    public string Type { get; set; }

    public string[] GetKeyWords()
    {
        // Return properties as array of key words.
        // You can cache the result for future use.
        return default(string[]);
    }
}
现在,如果您有项目列表和字符串关键字数组,则可以编写以下查询:

var matches = from item in items
              let itemKeyWords = item.GetKeyWords()
              where keyWords.All(k => itemKeyWords.Any(c => c == k))
              select item;
请尝试以下操作:

class Item
{
    public bool Gender { get; set; }
    public int Color { get; set; }
    public string Type { get; set; }

    public string[] GetKeyWords()
    {
        // Return properties as array of key words.
        // You can cache the result for future use.
        return default(string[]);
    }
}
现在,如果您有项目列表和字符串关键字数组,则可以编写以下查询:

var matches = from item in items
              let itemKeyWords = item.GetKeyWords()
              where keyWords.All(k => itemKeyWords.Any(c => c == k))
              select item;
给定以下订单类别:

结果现在包含

您也可以使用Intersect或哈希集来比较搜索值/标记,但如果没有关于要求的进一步信息,All/Any是一个足够好的解决方案IMHO。

给定以下订单类别:

结果现在包含


您也可以使用Intersect或哈希集来比较搜索值/标记,但如果没有关于需求的进一步信息,All/Any是一个足够好的解决方案。

您可以发布您尝试过的代码吗?您可以发布您尝试过的代码吗?