C# 如何搜索列表<;字符串[]>;通过字符串数组的第一列?
如果我有一个字符串数组列表(即列表),我如何通过包含的字符串数组的第一列搜索该列表 例如,假设我的列表包含以下字符串数组(假设每个字符串数组的第一列是ID): 如何在列表中找到ID为“Y7B”的字符串数组?您可以使用LINQ:C# 如何搜索列表<;字符串[]>;通过字符串数组的第一列?,c#,arrays,list,search,C#,Arrays,List,Search,如果我有一个字符串数组列表(即列表),我如何通过包含的字符串数组的第一列搜索该列表 例如,假设我的列表包含以下字符串数组(假设每个字符串数组的第一列是ID): 如何在列表中找到ID为“Y7B”的字符串数组?您可以使用LINQ: var result = list.First(array => array[0] == "Y7B"); 如果找不到匹配的数组,这将引发异常。您还可以使用FirstOrDefault: var result = list.FirstOrDefault(array
var result = list.First(array => array[0] == "Y7B");
如果找不到匹配的数组,这将引发异常。您还可以使用FirstOrDefault
:
var result = list.FirstOrDefault(array => array[0] == "Y7B");
当未找到匹配数组时,结果
将为空
如果代码的逻辑要求始终存在匹配数组,则应首先使用
。然后,如果违反逻辑,将引发异常。另一方面,如果不存在匹配数组是可以接受的,则应使用FirstOrDefault
并处理返回null
的情况。使用LINQ:这应该有效
var searchString = "Y7B";
var result = myListOfArrays.FirstOrDefault(x => x.First() == searchString);
如果未找到结果,则结果将为空
每当数组中的元素类型为:数组、列表等时,此方法都会起作用。您可以这样做
var list = new List<String[]>();
list.Add( new String[] {"X7B", "col2", "col3"});
list.Add(new String[] { "Y7B", "col2", "col3" });
list.Add( new String[] {"Z6C", "col2", "col3"});
var found = list.Find(x => x.Length > 0 && x[0] == "X7B");
使用针对这种情况设计的Linq扩展方法 只需定义一个lamda,它指定要用作查找的键。这里我们指定列表的第一条记录。我们也可以很容易地将其他复合键插入其中
var data = new List<string[]> {
{new [] {"X7B", "col2", "col3" }},
{new [] {"Y7B", "col2", "col3" }},
{new [] {"Z6C", "col2", "col3" }} };
var lookup = data.ToLookup (key => key[0]);
Console.WriteLine (lookup["Y7B"]);
/*
returns string[] of Y7B, col2, col3
*/
var数据=新列表{
{new[]{“X7B”、“col2”、“col3”},
{新[]{“Y7B”、“col2”、“col3”},
{new[]{“Z6C”、“col2”、“col3”}};
var lookup=data.ToLookup(key=>key[0]);
Console.WriteLine(查找[“Y7B]”);
/*
返回Y7B、col2、col3的字符串[]
*/
可以使用<代码> FrestSurrue以避免例外,您应该考虑使用<代码>字典<代码>。我认为对零长度字符串的测试是无用的。这是对零长度数组的测试。这是一个数组列表,要求检查第一个可能不存在的元素。
var found = list.FindAll(x => x.Length > 0 && x[0] == "X7B");
var data = new List<string[]> {
{new [] {"X7B", "col2", "col3" }},
{new [] {"Y7B", "col2", "col3" }},
{new [] {"Z6C", "col2", "col3" }} };
var lookup = data.ToLookup (key => key[0]);
Console.WriteLine (lookup["Y7B"]);
/*
returns string[] of Y7B, col2, col3
*/