C#LINQ将一个项附加到数组的末尾
本文关键字:数组 一个 C#LINQ | 更新日期: 2023-09-27 18:29:20
我有一个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
谢谢你的帮助!
尝试items.Concat(new[] { itemToAdd });
。
最简单的方法是稍微更改一下表达式。首先转换为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();
根据您的最后一行,您似乎希望将所有信息作为string
值返回。如果是这样,那么您可以执行以下
var builder = new StringBuilder();
foreach (var item in items) {
if (builder.Length != 0) {
builder.Append(",");
}
builder.Append(item);
}
string finalList = builder.ToString();
如果总的目标是在字符串的末尾再追加一个项,那么直接这样做会更有效率,而不是转换为int
集合,然后再转换回字符串。
int itemToAdd = ddlDisabledTypes.SelectedValue.ToInt(0);
string finalList = String.IsNullOrEmpty(activeList)
? itemToAdd.ToString()
: String.Format("{0},{1}", activeList, itemToAdd);
您的示例代码似乎非常复杂,无法匹配条件
使用您的代码
List<int> items = activeList.Split(',').Select(n => Convert.ToInt32(n)).ToList();
items.Add(ddlDisabledTypes.SelectedValue.ToInt(0));
string finalList = String.Join(',',items.ToArray());
只是操纵字符串
int itemToAdd = ddlDisabledTypes.SelectedValue.ToInt(0);
string finalList = String.IsNullOrWhiteSpace(activeList) ?
itemToAdd.ToString() :
itemToAdd + string.format(",{0}",itemToAdd);
为什么不:
List<int> items = activeList.Split(',').Select(n => Convert.ToInt32(n)).ToList();
int itemToAdd = ddlDisabledTypes.SelectedValue.ToInt(0);
items.Add(itemToAdd);
编辑:
接下来,如果您想要一个int数组:
int[] array = items.ToArray();
为什么不直接将项目添加为string
?
string finalList = items + "," + itemToAdd;
CCD_ 6在级联中被自动转换为CCD_。
如果items
可以是null
或为空,则将表达式更改为
string finalList = String.IsNullOrEmpty(items) ?
itemToAdd.ToString() : items + "," + itemToAdd;
我不明白为什么要使用String转换为Array转换为String。。?这就是你需要的吗?
string finalList = activeList + "," + ddlDisabledTypes.SelectedValue;
我使用'union'创建一个新数组,在这种情况下,新元素在开头:
class HelperX {
/// <summary>
/// Tenemos varios campos tipo bandera, cuyo valor puede ser 'S' = Sí o 'N' = No
/// </summary>
static public KeyValuePair<string, string>[] SiNo
{
get
{
return new KeyValuePair<string, string>[]
{
new KeyValuePair<string, string>( "S", "Sí"),
new KeyValuePair<string, string>( "N", "No")
};
}
}
/// <summary>
/// Tenemos varios campos tipo bandera, cuyo valor puede ser 'T' = 'Todos', 'S' = Sí o 'N' = No
/// </summary>
static public KeyValuePair<string, string>[] SiNoTodos
{
get
{
var todos = new KeyValuePair<string, string>[]
{
new KeyValuePair<string, string>( "T", "Todos"),
}.Union(SiNo);
return todos.ToArray();
}
}
}
此外,我可以创建一个selectListItem,将它们显示为View:中的select选项
ViewBag.SeleccionSiNoTodos = HelperX.SiNoTodos
.Select(kv => new SelectListItem() {
Value = kv.Key,
Text = kv.Value,
Selected = seleccionados?.Contains(kv.Key) == true })
.ToList();
最后,在视图中,我可以使用获得选择选项列表
@Html.DropDownList("SeleccionSiNoTodos", (IEnumerable<SelectListItem>)ViewBag.SeleccionSiNoTodos)