3

我只想从中获取firstlastList<string>

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

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

(aaa,bbb,ccc,ddd,)

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

output  aaa,ddd

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

4

6 回答 6

7

您可以将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指出的那样,如果你List<string>是空的,First()则会Last()抛出异常。注意FirstOrDefault().LastOrDefault()方法。

于 2013-09-24T12:15:59.410 回答
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();
于 2013-09-24T12:17:06.927 回答
0
var first = _ids.First();
var last = _ids.Last();
于 2013-09-24T12:18:56.110 回答
0
_ids.First()
_ids.Last()

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

于 2013-09-24T12:19:04.693 回答
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();
于 2013-09-24T12:20:44.807 回答
0

针对 OP 的最后一条评论:

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

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

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

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

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

Console.WriteLine(joined); // Prints "aaaa,bbbb,cccc"
于 2013-09-24T13:34:11.217 回答