从对象数组中删除项目
Remove item from object Array
我想从现有对象数组中删除一个项目并生成一个单独的对象数组,而不是在新对象数组中将删除的项目设为 null,
数组:
DataSet = new[]
{
new DataSet
{
Item_1 = "value1",
Item_2 = "value2",
},
new DataSet
{
Item_1 = "value3",
Item_2 = "value4",
}
}
预期结果:
"DataSet": [
{
"Item_1": "value3",
"Item_2": "value4",
}
]
以下代码按预期工作:
var tempListDataSet = _response.DataSet.ToList();
tempListDataSet.Remove(_response.DataSet[0]);
response.DataSet = tempListDataSet.ToArray();
只是想知道是否有更好的方法?
如果你想跳过第一个,你可以使用:
var result = _response.DataSet.Skip(1).ToArray();
认为这仍将创建一个新数组并复制元素,因为数组具有固定大小。跟帖供大家参考。
如果你想删除特定元素,你可以使用 linq :
var result = _response.DataSet.Where((source, index) => index != 1).ToArray();
我想从现有对象数组中删除一个项目并生成一个单独的对象数组,而不是在新对象数组中将删除的项目设为 null,
数组:
DataSet = new[]
{
new DataSet
{
Item_1 = "value1",
Item_2 = "value2",
},
new DataSet
{
Item_1 = "value3",
Item_2 = "value4",
}
}
预期结果:
"DataSet": [
{
"Item_1": "value3",
"Item_2": "value4",
}
]
以下代码按预期工作:
var tempListDataSet = _response.DataSet.ToList();
tempListDataSet.Remove(_response.DataSet[0]);
response.DataSet = tempListDataSet.ToArray();
只是想知道是否有更好的方法?
如果你想跳过第一个,你可以使用:
var result = _response.DataSet.Skip(1).ToArray();
认为这仍将创建一个新数组并复制元素,因为数组具有固定大小。跟帖
如果你想删除特定元素,你可以使用 linq :
var result = _response.DataSet.Where((source, index) => index != 1).ToArray();