首页 > 解决方案 > 使用 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");

标签: c#arrayslinqremoveall

解决方案


为什么要转换为列表呢?我认为这是不必要的步骤。我为您创建了一个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()将结果转换为数组变量。

让我知道这是否有帮助。


推荐阅读