如何从列表<字符串>中获取第一个和最后一个值

本文关键字:第一个 获取 最后一个 列表 字符串 | 更新日期: 2023-09-27 18:32:30

我只想从List<string>中获取firstlast值。

List<String> _ids = ids.Split(',').ToList();

上面的代码给了我所有,分隔值

(aaa,bbb,ccc,ddd,)

只需要获取并显示第一个和最后一个值,我该怎么做?

output  aaa,ddd

我尝试了firstlast,但我想消除字符串末尾的,:(

如何从列表<字符串>中获取第一个和最后一个值

您可以将List<string>用作数组,例如;

List<string> _ids = new List<string>() { "aaa", "bbb", "ccc", "ddd" };
var first = _ids[0]; //first element
var last = _ids[_ids.Count - 1]; //last element

使用 LINQ 时,可以使用Enumerable.FirstEnumerable.Last方法。

List<string> _ids = new List<string>() { "aaa", "bbb", "ccc", "ddd" };
var first = _ids.First();
var last = _ids.Last();
Console.WriteLine(first);
Console.WriteLine(last);

输出将是;

aaa
ddd

这里有一个DEMO.

注意:正如亚历山大·西蒙诺夫指出的那样,如果您的List<string>为空,First()Last() 将引发异常。请注意FirstOrDefault().LastOrDefault()方法。

简单的答案是使用 Linq

string[] idsTemp = ids.Split(',');
List<string> _ids = new List<string> { {idsTemp.First()}, {idsTemp.Last()}};

您可能想要更复杂的情况,因为如果长度为 0,则会引发异常,如果长度为 1,则返回两次相同的值。

public static class StringHelper {
  public List<string> GetFirstLast(this string ids) {
    string[] idsTemp = ids.Split(',');
    if (idsTemp.Length == 0) return new List<string>();
    return (idsTemp.Length > 2) ?
       new List<string> {{ idsTemp.First() }, { idsTemp.Last() }} :
       new List<string> {{ idsTemp.First() }};
  }
}

然后,可以使用此扩展方法。

List<string> firstLast = ids.GetFirstLast();

编辑 - 非林克版本

public static class StringHelper {
  public List<string> GetFirstLast(this string ids) {
    string[] idsTemp = ids.Split(',');
    if (idsTemp.Length == 0) return new List<string>();
    return (idsTemp.Length > 2) ?
       new List<string> { {idsTemp[0] }, { idsTemp[idsTemp.Length-1] }} :
       new List<string> {{ idsTemp[0] }};
  }
}

编辑 - 删除尾随

,

使用前面的方法之一,即 Linq 或 NonLinq,您可能想要这样做。

List<string> firstLast = ids.Trim(new[]{','}).GetFirstLast();
var first = _ids.First();
var last = _ids.Last();
_ids.First()
_ids.Last()

根据"列表类"文档http://msdn.microsoft.com/library/vstudio/s6hkc2c4.aspx

通过手动:

string first = null;
string last = null;
if (_ids.Count > 0)
{
    first = _ids[0];
    last = _ids[_ids.Count - 1];
}

通过 LINQ:

string first = _ids.FirstOrDefault();
string last = _ids.LastOrDefault();

回应OP的最后一条评论:

",在

最后出现,因为当我发送参数时,我会在每个参数之后添加 ,以便在.cs文件中它来到那里"

看起来您正在尝试从字符串数组中生成一个包含逗号分隔值的字符串。

您可以使用 string.Join() 执行此操作,如下所示:

string[] test = {"aaaa", "bbbb", "cccc"};
string joined = string.Join(",", test);
Console.WriteLine(joined); // Prints "aaaa,bbbb,cccc"