如何通过 StartsWith 或包含搜索值查找列表中的第一个或最后一个字符串而不添加到另一个列表

How to find first or last string in list by StartsWith or Contains searching value without adding to another list

我试图了解我可以使用哪些变体来仅获取一个字符串 ContainsStartsWith 第一行或最后一行,其中包含搜索值或以它开头。但是没有创建新列表并从那里获取第一行或最后一行,结果实际上是这个问题的答案,但我想知道是否可以直接从列表中获取它,例如,如果列表内容是:

  List<string> list = new List<string>()
            {
                "data file collection k"
                "file name collection l",
                "file data collection m",
                "name data collection a",
                "name data collection b",
                "data name collection c",
                "data file collection d"
            };

和搜索词:

string val = "name";

所以这样:

foreach (string str in List) 
{ 
     if (str.StartsWith(val)) 
     { 
         // ...
     } 
}

结果是:

name data collection a
name data collection b

或者如果查找整个字符串内容,例如:

  var mtchVal = list.Where(stringToCheck => stringToCheck.Contains(val)); 

结果将是:

file name collection l
name data collection a
name data collection b
data name collection c

StartsWith 的预期结果必须是:

name data collection a

按全部内容:

file name collection l

如果允许 linq 那么

    var list = new List<string>();
    var first = list.FirstOrDefault(s => s.StartsWith("name"));
    var last = list.LastOrDefault(s => s.StartsWith("name"));

对于 StartsWith 的情况,使用

list.FirstOrDefault(stringToCheck => stringToCheck.StartsWith(val)); 

对于整个字符串内容的情况,使用

list.FirstOrDefault(stringToCheck => stringToCheck.Contains(val));