我有一个字符串列表列表(例如$playerName = isset($_GET['pFullname']) ?$_GET['pFullname'] :"";
echo $playerName;
) - 将其视为电子表格中的行和列。
列表是动态创建的,因此行数和列数可以更改。
我想查询列(列表中的列表)(例如List<List<string>>
)以查看字符串是否匹配,当它确实时,我想返回一个包含所有匹配的行和列的新列表在行内。
基本上我让一个用户在列表上输入一个过滤器,然后它会显示匹配的所有行和列(它最好需要与任何列匹配,但我会很满意一个匹配的示例,说明此时的第一个col) 。
我已经尝试了几个例子,但它们似乎只是将列作为列表返回,但没有外部列表(行)。
任何帮助将不胜感激:)
以下是使用数据
的方案示例List<List<string>>
我希望能够创建一个新的ColumnA ColumnB ColumnC
Mark Australia 25
Marion America 30
Fred Dave 35
,其中包含正在应用的过滤器的结果(最好搜索所有列和行,但会对刚刚检查过第一列的示例感到满意)。所以,如果我的过滤器是List<List<string>>
,那么我应该得到一个包含2行的"Ma"
后面(在这种情况下,因为它与Mark和Marion匹配)...我不希望列表返回只有Mark和Marion,我需要2行和2行的所有列。
答案 0 :(得分:5)
如果你需要的只是在所有列表中找到一个值并返回整个列表,如果找到它:
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)