我有一个数据集,我需要过滤字符串值。如果属性包含特定字符串,则选择该项。这很好用
我需要更改此项以允许对字符串列表进行测试
我可以迭代对象并遍历选定的值,将匹配存储在单独的列表中,但感觉应该有更好的方法。
希望有人有一个很好的例子来说明如何实现这个
//Gets a set of addresses, objects have several properties, one of them beeing (example):
// o.ZipCity ="1000 Copenhagen"
List<AddresObjectType> result = getAllAddresses();
// Example : 1000,2000
var listOfZip = context.Request["zip"].Split(Convert.ToChar(","));
//Current code, just one value
result = result.Where(t => t.ZipCity.Contains(context.Request["zip"])).ToList();
//Code I need...
//IF any of the passed values are matched then include
result = result.Where(t => t.ZipCity.Contains(listOfZip)).ToList();
SO desiered effect: - 请求值“1000,2000,3000”(一对多值) - 结果集包括具有至少包含其中一个值的ZipCity值的所有值
答案 0 :(得分:2)
你可以尝试这个:
result = result.Where(t => listofZip.Contains(t.ZipCity)).ToList();
listOfZip
将包含1000,2000,3000的值,并且您尝试获取其zip为其中之一的所有城市。
<强>更新强>
result = result.Where(t => listofZip.Any(zip=>t.ZipCity.Contains(zip)).ToList();
如果listofZip中有任何元素满足谓词,则Any
扩展方法返回true:
zip=>t.ZipCity.Contains(zip)
如果没有,则为假。
谓词检查什么?
它检查当前的zip是否包含在ZipCity中。如果是,则返回true。否则,它返回false。