C#LINQ将一个项追加到数组的末尾

Jar*_*red 5 c# linq

我有一个int []数组.我需要获取一个int并将其附加到数组的末尾,而不会影响该数组中其他项的位置.使用C#4和LINQ实现这一目标的最优雅方式是什么?

我的代码:

 int[] items = activeList.Split(',').Select(n => Convert.ToInt32(n)).ToArray();
 int itemToAdd = ddlDisabledTypes.SelectedValue.ToInt(0);

 // Need final list as a string
 string finalList = X
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

Jus*_*tch 17

试试items.Concat(new[] { itemToAdd });.


Jar*_*Par 9

最简单的方法是稍微改变你的表达方式.首先转换为a List<int>,然后添加元素,然后转换为数组.

List<int> items = activeList.Split(',').Select(n => Convert.ToInt32(n)).ToList();
int itemToAdd = ddlDisabledTypes.SelectedValue.ToInt(0);
items.Add(itemToAdd);

// If you want to see it as an actual array you can still use ToArray
int[] itemsAsArray = items.ToArray();
Run Code Online (Sandbox Code Playgroud)

根据您的最后一行,虽然您似乎希望将所有信息作为string值返回.如果是,那么您可以执行以下操作

var builder = new StringBuilder();
foreach (var item in items) {
  if (builder.Length != 0) {
    builder.Append(",");
  }
  builder.Append(item);
}
string finalList = builder.ToString();
Run Code Online (Sandbox Code Playgroud)

如果总体目标只是在字符串的末尾添加一个项目,那么直接执行它而不是转换为int集合然后返回字符串会更有效.

int itemToAdd = ddlDisabledTypes.SelectedValue.ToInt(0);
string finalList = String.IsNullOrEmpty(activeList)
  ? itemToAdd.ToString()
  : String.Format("{0},{1}", activeList, itemToAdd);
Run Code Online (Sandbox Code Playgroud)