我试图获得一个供应商名称列表,其中名称以A和E之间的字符开头。是否有一种方法可以做到这一点,也许使用LINQ?
我目前的解决方案只是一个很长的if语句
var vendors = _context.Vendors.ToList();
var sortedVendors = new List<Vendor>();
foreach (Vendor vendor in vendors)
{
if (vendor.Name.StartsWith('A') ||
vendor.Name.StartsWith('B') ||
vendor.Name.StartsWith('C') ||
vendor.Name.StartsWith('D') ||
vendor.Name.StartsWith('E'))
{
sortedVendors.Add(vendor);
}
}
这是工程,但可怕的,我很想知道,如果有一个更优雅的解决方案
4条答案
按热度按时间lstz6jyr1#
为了使它清晰易读,我想我会这样做:
jucafojl2#
使用模式匹配,它可以更直观。
du7egjpx3#
另一个选项是正则表达式。要测试字符串是否以A到E开头,正则表达式是
^[A-E]
。对于不区分大小写的比较,请在创建正则表达式时设置
IgnoreCase
选项。要模块化,请创建一个接受供应商列表、范围开始和范围结束的方法。此实现不区分大小写:
然后调用
sortedList = whatever.GetRange(vendors, 'A', 'E');
xxls0lw84#
我会这么做