假设您有以下简单对象:
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 查询将为我提供所需的 list ,但仅适用于商品税:
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
的调用,它将两个序列连接在一起。关于c# - LINQ - 从同一对象的多个属性中选择多个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6332265/