gpt4 book ai didi

c# - 按联系人 ID 查询发票时 Xero api 不返回值

转载 作者:太空宇宙 更新时间:2023-11-03 19:55:18 24 4
gpt4 key购买 nike

我需要通过联系人 ID 获取联系人的发票,因此我编写了类似于 Qusery 3(用于付款)的查询 1。我的目标是从属于它的关联对象联系人的字段中查询发票。但是查询 1 返回 0 个结果。

然后我尝试了查询发票的方式,通过属于发票的字段进行查询。我指的是 GitHub 中的 Xero C# 代码示例。它正在运行并按预期返回 10 个结果。

为什么我不能从发票中属于联系人的 ContactId 字段查询?

代码

查询 1(不工作 - 返回 0 个结果,期望 10 个结果)

 var contact = _api.Contacts.Find().FirstOrDefault(c => c.AccountNumber == accountNumber);
returnInvoiceList =
_api.Invoices.Find()
.Where(c => c.Contact.Id == contact.Id)
.OrderBy(item => typeof(Invoice).GetProperty(
orderby, BindingFlags.Public | BindingFlags.Instance).GetValue(item))
.Skip(i * x)
.Take(x)
.ToList();

查询 2(工作)

returnInvoiceList =
_api.Invoices.Where(string.Format("Reference == \"{0}\"", accountNumber)).Find()
.OrderBy(item => typeof(Invoice).GetProperty(
orderby, BindingFlags.Public | BindingFlags.Instance).GetValue(item))
.Skip(i * x)
.Take(x)
.ToList();

QUERY 3(与查询 1 类似的模式查询,用于支付)

 returnPaymentList =
_api.Payments.Find()
.Where(c => c.Invoice.Contact.Id == contact.Id)
.OrderBy(item => typeof(Payment).GetProperty(
orderby, BindingFlags.Public | BindingFlags.Instance).GetValue(item))
.Skip(i * x)
.Take(x)
.ToList();

最佳答案

在您的 Query1 中,看起来您使用的是 Linq .Where 而不是包装器的开放式 .Where 子句。使用 Linq .Where 将在客户端执行过滤。使用开放式包装器。Where 子句将允许在服务器端进行过滤,这意味着您只会收到与您的查询匹配的发票。

我建议您尝试替换查询的这一部分

_api.Invoices
.Find()
.Where(c => c.Contact.Id == contact.Id)

_api.Invoices
.Where("Contact.ContactID == Guid(\"" + contact.Id +"\")")
.Find()

利用服务器端过滤来确保您只会收到具有正确 contactID 的发票。

对于如何在 Query1 中查找您的联系人以及如何在 Query3 中查找您的付款,也可能值得您做类似的事情。

还值得注意的是,您最多只能返回 100 条记录,因为默认情况下包装器将分页发票。如果您希望返回超过 100 条记录,您将需要循环浏览页面,直到您不再收到任何更多记录,方法是在 .Find() 之前提供方法 .Page(x),其中 x 是您想要的页码。

这就是为什么您的 Query3 有效而您的 Query1 无效的原因。付款端点在 Xero 的 API 中尚不支持分页,因此您正在连接的组织中接收所有付款,因此在客户端进行过滤会很好,但对于 Query1,您只会收到 100 张发票(由于分页) 并且它们都不匹配您的客户端 Linq.Where。

干杯,

马特

关于c# - 按联系人 ID 查询发票时 Xero api 不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34323549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com