Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何搜索列表<;字符串[]>;通过字符串数组的第一列?_C#_Arrays_List_Search - Fatal编程技术网

C# 如何搜索列表<;字符串[]>;通过字符串数组的第一列?

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

如果我有一个字符串数组列表(即列表),我如何通过包含的字符串数组的第一列搜索该列表

例如,假设我的列表包含以下字符串数组(假设每个字符串数组的第一列是ID):

如何在列表中找到ID为“Y7B”的字符串数组?

您可以使用LINQ:

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
*/