我有一个字符串列表(例如 List<List<string>>
)- 将其视为电子表格中的行和列。
列表是动态创建的,因此行数和列数可以更改。
我想查询列(列表中的列表)(例如 List<List<string>>
)以查看字符串是否匹配,如果匹配则我想返回一个新列表,其中包含所有匹配的行和列行。
基本上我让用户在列表上输入一个过滤器,然后它会显示所有匹配的行和列(它需要最好匹配任何列,但我会很高兴看到一个匹配的例子,比如此时的第一个列) .
我已经尝试了几个例子,但它们似乎都只是将列作为列表返回,但上面没有外部列表(行)。
任何帮助将不胜感激:)
这里是一个使用数据场景的例子
ColumnA ColumnB ColumnC
Mark Australia 25
Marion America 30
Fred Dave 35
我希望能够创建一个新的 List<List<string>>
包含应用过滤器的结果(最好搜索所有列和行,但对仅检查第一列的示例会很满意)。所以如果我的过滤器是 "Ma"
那我应该得到一个List<List<string>>
返回包含 2 行(在这种情况下,因为它匹配 Mark 和 Marion)...我不想要一个只有 Mark 和 Marion 的列表,我需要 2 行和 2 行的所有列。
最佳答案
如果您只需要在所有列表中找到一个值并在找到时返回整个列表:
string search = txtUserSearch.Text.Trim();
List<List<string>> searchResult = allLists
.Where(list => list.Any(s => search.Equals(s, StringComparison.CurrentCultureIgnoreCase)))
.ToList();
如果您不需要不区分大小写的搜索,您可以使用:
.Where(list => list.Contains(search))
如果你甚至想找到部分匹配(子字符串),你可以使用这个:
.Where(list => list.Any(s => s != null && s.Contains(search)))
或不区分大小写:
.Where(list => list.Any(s => s != null && s.IndexOf(search, StringComparison.CurrentCultureIgnoreCase) >= 0)
关于c# - 使用 Linq 查询 List<List<string>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37275462/