如何从列表<string>?</string>获取第一个和最后一个值

时间:2013-09-24 12:14:56

标签: c# asp.net-mvc c#-4.0

我希望first只获得lastList<string>个值。

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

上面的代码为我提供了所有,分隔值

(aaa,bbb,ccc,ddd,)
  

我需要拍摄并仅显示第一个和最后一个值,我该怎么做?

output  aaa,ddd

我尝试使用firstlast,但我希望消除字符串末尾的, :(

6 个答案:

答案 0 :(得分:4)

您可以将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

注意:作为Alexander Simonov pointed,如果您的List<string>为空,则First()Last()会抛出异常。请注意FirstOrDefault().LastOrDefault()方法。

答案 1 :(得分:4)

简单的答案是使用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();

编辑 - 非Linq版

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();

答案 2 :(得分:0)

var first = _ids.First();
var last = _ids.Last();

答案 3 :(得分:0)

_ids.First()
_ids.Last()

根据“List-Class”文档 http://msdn.microsoft.com/library/vstudio/s6hkc2c4.aspx

答案 4 :(得分:0)

用手:

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();

答案 5 :(得分:0)

回应OP的最后评论:

“,即将结束,因为当我发送我添加的参数时,在每个参数之后,以便在.cs文件中它会到达那里”

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

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

string[] test = {"aaaa", "bbbb", "cccc"};

string joined = string.Join(",", test);

Console.WriteLine(joined); // Prints "aaaa,bbbb,cccc"