Linq to Entities,匹配值包含一个或多个字符串的位置

Linq to Entities, match where value contains one or more strings

我有一个数据集需要根据字符串值进行过滤。如果 属性 包含特定字符串,则选择该项目。效果不错

我需要更改它以允许对字符串列表进行测试

我可以迭代对象并循环遍历选定的值,将匹配项存储在单独的列表中,但觉得应该有更好的方法。

希望有人有一个很好的例子来说明如何完成这个

//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();

所以想要的效果: - 请求值“1000,2000,3000”(一对多值) - 结果集包括所有具有 ZipCity 值且至少包含一个值

你可以试试这个:

result = result.Where(t => listofZip.Contains(t.ZipCity)).ToList();

listOfZip 将包含值 1000、2000、3000,您尝试获取其邮政编码为其中之一的所有城市。

更新

result = result.Where(t => listofZip.Any(zip=>t.ZipCity.Contains(zip)).ToList();

Any 扩展方法 return 如果 listofZip 中有满足谓词的任何元素则为真:

zip=>t.ZipCity.Contains(zip)

如果没有则返回 false。

谓词检查什么?

它检查当前的 zip 是否包含在 ZipCity 中。如果是这样 return 是真的。否则,它 return 是错误的。