c# - 使用 linq 从列表中删除元素
问题描述
我有 ct_CompleteOrder 类型的对象,并且有以下类:
ct_CompleteOrder 类
public partial class ct_CompleteOrder {
private ct_CompleteOrderPayments paymentsField;
}
ct_CompleteOrderPayments 类
public partial class ct_CompleteOrderPayments {
private ct_Payment[] paymentField;
public ct_Payment[] Payment {
get {
return this.paymentField;
}
set {
this.paymentField = value;
}
}
}
ct_Payment 类
public partial class ct_Payment {
public string type{get; set;}
}
我想ct_Payment
根据类型值删除数组的元素。我尝试先将其转换为列表以应用 RemoveAll,但它不起作用。我究竟做错了什么?
completeOrder.Payments.Payment.ToList().RemoveAll(x => x.type == "AUTO");
解决方案
为什么要转换为列表呢?我认为这是不必要的步骤。我为您创建了一个DotNetFiddle,以根据我对您的问题的理解向您展示我所做的事情。
C#
using System;
using System.Runtime;
using System.Linq;
public class Program
{
public static void Main()
{
string[] arrayOfItems = new string[5] {"Apple", "Banana", "Orange", "Apple", "Grape"};
var arrayWithoutApples = arrayOfItems.Where(x => x != "Apple").ToArray();
foreach(var item in arrayWithoutApples)
{
Console.WriteLine(item);
}
// Output:
// Banana
// Orange
// Grape
}
}
我确定我的示例不像您的代码那么复杂,但是如果您有一个值数组并且您想通过根据特定条件删除元素来“精简”该数组,那么您不必转换为事先列出。用于Where
检索您想要或不想要的项目,然后用于ToArray()
将结果转换为数组变量。
让我知道这是否有帮助。
推荐阅读
- python - 尝试创建 Pandas 系列时输入错误
- reactjs - 在 Reactjs 中打印到文本文件
- java - java是如何实现栈的?
- mysql - 从 Azure 存储 MySQL 还原转储
- node.js - npm ERR cb() 在安装聚合物调制器时从未调用错误
- regex - 正则表达式在括号内获取特定单词
- python - Google Vision API:ModuleNotFoundError:找不到模块“google.oauth2”
- inno-setup - Inno Setup - 获取 Exec 的输出
- python - 如何压缩两个不同大小的列表?
- angular - 在父组件的值更改时更新子组件中的值