c# – LINQ – 从同一对象中的多个属性中选择多个

前端之家收集整理的这篇文章主要介绍了c# – LINQ – 从同一对象中的多个属性中选择多个前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设您有以下简单对象:
class Order
{
    public Customer[] Customers { get; set; }
}

class Customer
{
    public SaleLine[] SaleLines { get; set; }
}

class SaleLine
{
    public Tax[] MerchTax { get; set; }
    public Tax[] ShipTax { get; set; }
}

class Tax
{
    public decimal Rate { get; set; }
    public decimal Total { get; set; }
}

有了这些对象,我希望能够获得整个订单上使用的所有独特税率的清单,包括商品和运费税率.

以下LINQ查询获取我需要的列表,但仅用于商品税:

var TaxRates = MyOrder.Customers
            .SelectMany(customer => customer.SaleLines)
            .SelectMany(saleline => saleline.MerchTax)
            .GroupBy(tax => tax.Rate)
            .Select(tax => tax.First().Rate

如何获得包含商品和运费的唯一税率列表的列表?

解决方法

听起来你想要这个:
var TaxRates = MyOrder.Customers
            .SelectMany(customer => customer.SaleLines)
            .SelectMany(saleline => saleline.MerchTax.Concat(saleline.ShipTax))
            .GroupBy(tax => tax.Rate)
            .Select(group => group.Key);

基本上,更改是对Concat的调用,它将两个序列连接在一起.

原文链接:https://www.f2er.com/csharp/91472.html

猜你在找的C#相关文章