在列表<字典<字符串、对象>>中搜索值,但使用非特定字符串



是否有一种方法可以在List<Dictionary<string, object>>中搜索非特定字符串,如SQL中的LIKE OPERATION(%),并返回新的List<Dictionary<string, object>>

我找到了这个东西,但它使用一个特定的字符串来搜索。在List<string,>>

中搜索值例如,我有一个这样的列表字典:

List<Dictionary<string, object>> userList = new List<Dictionary<string, object>>(){
new Dictionary<string, object>() {
{"Id", 1},
{"Name", "John"}
},
new Dictionary<string, object>() {
{"Id", 2},
{"Name", "Foo"}
},
new Dictionary<string, object>() {
{"Id", 3},
{"Name", "Admin"}
},
new Dictionary<string, object>() {
{"Id", 4},
{"Name", "AdminAccount"}
},
}

如果用户要搜索字符串"john",那么他/她可以获得第一个包含"john"的列表。名字但是如果搜索字符串是"Admin",那么前两个最后一个Dictionary将返回。

实际上,这可以使用循环来实现。但是我想学习如何使用LINQ使我的代码更短。

基于您想要搜索值而不是键的事实,我认为您可以使用System来完成此操作。Linq(将其添加为using语句):

var filteredList = listOfDictionaries.Where(dictionary => dictionary.Values.Any(Value => Value.ToString().Contains(search))).ToList();

然而,作为你的字典的值类型'对象',他们总是有一个预期的字符串表示吗?

更新:

如果你想只搜索特定类型的键,你可以这样做。

var searchPair = new KeyValuePair<string, string>("Name", "searchTerm");
var filteredList = listOfDictionaries.Where(dictionary => dictionary[searchPair.Key].ToString().Contains(searchPair.Value)).ToList();

相关内容

  • 没有找到相关文章

最新更新