【发布时间】:2016-06-02 05:57:08
【问题描述】:
我需要使用 C# linq 将嵌套的 json 集合相互比较。这是 json 集合的示例 以及他们绑定的类。
=== 集合 1 ===
[
{
"contractId": "100-200-A",
"invoices": [
{
invoiceNumber: 987654
},
{
invoiceNumber: 555999
}
]
},
{
"contractId": "300-777-Z",
"invoices": [
{
invoiceNumber: 12345
},
{
invoiceNumber: 100025
}
]
}
]
public class Contract
{
public string ContractId { get; set; }
public IList<Invoice> Invoices { get; set; }
public class Invoice
{
public int InvoiceNumber { get; set; }
}
}
=== 集合 2 ===
[
{
"paymentDate": "01/01/2000",
"contracts":[
{
"contractId": "100-200-A",
"invoices": [
{
invoiceNumber: 987654
},
{
invoiceNumber: 555999
},
{
invoiceNumber: 444333
},
{
invoiceNumber: 111000
}
]
},
{
"contractId": "300-777-Z",
"invoices": [
{
invoiceNumber: 12345
},
{
invoiceNumber: 100025
},
{
invoiceNumber: 888666
},
{
invoiceNumber: 222999
}
]
}
]
}
]
public class PaymentRequest
{
public DateTime PaymentDate { get; set; }
public IList<ContractList> Contracts { get; set; }
public class ContractList
{
public string ContractId { get; set; }
public IList<InvoiceList> Invoices { get; set; }
}
public class InvoiceList
{
public int InvoiceNumber { get; set; }
}
}
假设两个集合中的 contractId 相同,我可以在两者之间创建一个 linq 连接,我很难找到第二个集合集中的额外发票。本质上,我需要取回第二个集合中不存在于第一个集合中的特定contractId的所有发票编号的列表。
【问题讨论】:
-
为什么同一件事有两个不同的类?
InvoicevsInvoiceList和ContractvsContractList? -
有效问题。为简洁起见,处理现有实现和许多类属性(来自两者)被忽略了