为了账号安全,请及时绑定邮箱和手机立即绑定

您如何使用 TransactionSearch 进行搜索?

您如何使用 TransactionSearch 进行搜索?

C#
莫回无 2022-12-24 10:15:32
您如何找到具有供应商付款内部 ID 的供应商付款(交易)?我很难弄清楚交易搜索是如何工作的。下面是我的代码:它返回成功但没有结果using (var serviceClient = new ServiceClient(token))        {            var tranSearch = new TransactionSearchAdvanced();            var recordRefs = new List<RecordRef>();            recordRefs.Add(new RecordRef()            {                internalId = @"723212",                type = RecordType.vendorPayment,                typeSpecified = true            });            var types = new List<string>();            types.Add(@"_vendorPayment");            tranSearch.criteria = new TransactionSearch()            {                basic = new TransactionSearchBasic()                {                    internalId = new SearchMultiSelectField()                    {                        @operator = SearchMultiSelectFieldOperator.anyOf,                        operatorSpecified = true,                        searchValue = recordRefs.ToArray()                    },                    type = new SearchEnumMultiSelectField()                    {                        @operator = SearchEnumMultiSelectFieldOperator.anyOf,                        operatorSpecified = true,                        searchValue = types.ToArray()                    }                                        }                                };                            var result = serviceClient.search(tranSearch);        }搜索结果返回成功,但recordlist 中没有记录,searchrowlist 中没有搜索。
查看完整描述

1 回答

?
LEATH

TA贡献1936条经验 获得超7个赞

想象一下TransactionSearchAdvanced()UI 中保存的搜索。您需要指定要使用的条件以及要返回的列。在运行搜索之前,添加以下代码以指定要返回的列。您可能还想为 mainLine 添加一个条件,否则true每个事务行将得到一个结果,而不是每个事务一个结果。


tranSearch.columns = new TransactionSearchRow()

{

    basic = new TransactionSearchRowBasic()

    {

        tranId = new[] {new SearchColumnStringField()}

    }

};


var result = ns.search(tranSearch);


if (result.status.isSuccess)

{

    foreach (var rowList in result.searchRowList)

    {

        if (rowList is TransactionSearchRow row)

        {

            var tranId = row.basic.tranId[0].searchValue;

            var total = row.basic.total[0].searchValue;

            Console.WriteLine($"{tranId} - {total}");

        }

    }

}

最简单的方法:因为你有内部 ID,你可以TransactionSearchBasic()像这样获取整个记录:


var search = new TransactionSearchBasic()

{

    type = new SearchEnumMultiSelectField()

    {

        @operator = SearchEnumMultiSelectFieldOperator.anyOf,

        searchValue = new[] { "_vendorPayment" },

        operatorSpecified = true,

    },

    internalId = new SearchMultiSelectField()

    {

        @operator = SearchMultiSelectFieldOperator.anyOf,

        searchValue = new[] { new RecordRef { internalId = "723212" } },

        operatorSpecified = true

    }

};


var results = ns.search(search);


foreach (var result in results.recordList)

{

    if (result is VendorPayment vendorPayment)

    {

        Console.WriteLine(vendorPayment.tranId);

    }

}


查看完整回答
反对 回复 2022-12-24
  • 1 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号