存在于列表 c#

Exist in list c#

我想知道我的元素 [3] 是否存在于我的列表中:

List<String> Elements = Ligne.Split(',').ToList();
     if (Elements[2] != ""){
         if (Elements[3] != ""){//do something}
         else{//do another thing}

我的 "Ligne" 可以有 3 个元素 (0,1,2) 或 4 个 (0,1,2,3),我无法测试我的 Elements[3] 是否存在,因为如果它不存在 visual studio 说 -> "Index limit reach".

您可以查看列表中有多少个元素;

List<String> Elements = Ligne.Split(',').ToList();
     if (Elements[2] != ""){
         if (Elements.Count > 3 && Elements[3] != ""){//do something}
         else{//do another thing}

一种检查方法可能是测试 Elements.Count 属性 以查看是否有 4 个元素。由于您要处理的字符串在拆分后可能有也可能没有那么多元素,因此这可能是可行的方法。

List<String> Elements = Ligne.Split(',').ToList();
if (Elements[2] != ""){
  if (Elements.Count >= 4){//do something}
  else{//do another thing}

在您的代码中:

List<String> Elements = Ligne.Split(',').ToList();
     if (Elements[2] != ""){
         if (Elements[3] != ""){//do something}
         else{//do another thing}

您假设至少有 4 个元素。然而。如果不是这样怎么办?显然当情况不正确时会出现这种情况,最简单的解决方法是

if (Elements.Count>2 && Elements[2] != "")
{
  if (Elements.Count>3 && Elements[3] != ""){//do something}
  else{//do another thing}
}

最好的方法是使用 Elements.Count - 这会告诉您列表中元素的数量。

List<String> Elements = Ligne.Split(',').ToList();
if (Elements.Count >= 3 && Elements[2] != "") 
{
    if (Elements.Count >= 4 && Elements[3] != "")
    { /*do something*/ }
    else
    { /*do another thing*/ }
}

您可以简单地使用 .exists 方法来检查列表元素是否存在。返回 bool 值(找到为真,未找到为假)。

在您的情况下,它看起来像这样(免责声明:此代码可能无法编译):

List<String> Elements = Ligne.Split(',').ToList();
bool myValueExists = Elements.Exists(x => x[3] != null);

 if (myValueExists){
    /* Proceed with whatever you desire */
}

这种方法简洁明了。无需担心列表中有多少元素。以后的开发者也很容易认识和理解。

Additional source

var newList = Elements.Select((val, idx) => new { Value = val, Index = idx});

像这样使用 Linq,您可以获得一个新的自定义对象列表,其中包含与索引关联的值。现在您可以轻松检查具有特定索引的项目是否存在:

if (newList.SingleOrDefault(i => i.Index == 3) != null)
{
    // do something
}