自定义对象列表 - Linq 筛选类似于 SQL 'Like' 子句

Custom Object List - Linq Filtering Similar to SQL 'Like' clause

我正在使用一个非常有用的数据表,但是我决定将其转换为自定义对象列表以保留一些系统资源。

在我的客户列表中,我有带有邮政编码的对象:

B1 7NY, B2 8JK, B1 XLS, B9 2BY,

BW7 1NJ, BF9 3NJ, BJ4 2NP, BW8 5DO,

现在在我的列表框中,用户可以select: 乙, 体重, 高炉, 北京,

所以我需要一个查询,当用户 selects 'B' 在列表框中时,我想删除上面所有的 B1-B9 邮政编码。

如果用户 selects 'BW' 我想删除所有 BW 邮政编码。

customerList.Where(c => c.Postcode.StartsWith(postcodeID.ToString()));

这适用于邮政编码 id = BL 的情况,但是当邮政编码的第二个字符为数字时呢? B1-B9。我如何 select 所有邮政编码类似于 b1-b9 的对象?

   if (char.IsDigit(postcodeID.ToString()[1]))
   {
       CustList.RemoveAll(c => c.Postcode[0] == postcodeID[0] &&
                                                    char.IsDigit(c.Postcode[1]));
   }
   else
   {
       CustList.RemoveAll(c => c.Postcode.StartsWith(postcodeID.ToString()));
   }

您可以检查第二个 char 是否是 数字 并基于此构建查询:

if(char.IsDigit(postcodeID.ToString()[1]))
{
    query = customerList.Where(c => c.Postcode[0] == 'B' &&
                                    char.IsDigit(c.Postcode[1]));
}
else 
{
    query = customerList.Where(c => c.Postcode.StartsWith("BL"));
}