繁体   English   中英

自定义对象列表-与SQL'Like'子句相似的Linq过滤

[英]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,

现在,用户可以在我的列表框中选择:B,BW,BF,BJ,

因此,我需要一个查询,当用户在列表框中选择“ B”时,我想删除所有如上所述的B1-B9邮政编码。

如果用户选择“ BW”,我想删除所有BW邮政编码。

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

当邮政编码id = BL时,此方法会很好用,但是当邮政编码2nd char为数字时该怎么办。 B1-B9。 如何选择邮政编码类似于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"));
}

暂无
暂无

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

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