1 回答

TA貢獻1909條經(jīng)驗 獲得超7個贊
您可以從循環(huán)中提取,作為字典,而不是在每次迭代時查詢:vendorspaymentTermsallTaxSchemes
private void accessVendorGridData() {
var vendors = _vendorservice
.GetAllVendorAdd()
.GroupBy(item => item.Id)
.ToDictionary(chunk => chunk.Key, chunk => chunk.ToList());
var paymentTerms = _vendorservice
.GetAllPaymentTerms()
.GroupBy(item => item.Id)
.ToDictionary(chunk => chunk.Key, chunk => chunk.SingleOrDefault());
var allTaxSchemes = _vendorservice
.GetAllTaxScheme()
.GroupBy(item => item.Id)
.ToDictionary(chunk => chunk.Key, chunk => chunk.SingleOrDefault());
foreach (var item in getAllVendorList) {
var Addr = vendors.TryGetValue(item.Id, out var addrs)
? addrs
: new List<Vendor>(); //TODO: put the right type instead of Vendor
var paymentTerm = paymentTerms.TryGetValue(item.PaymentTermId, out var term)
? term
: null;
var taxscheme = allTaxSchemes.TryGetValue(item.PaymentTermId, out var scheme)
? scheme
: null;
}
}
您當前的代碼有
O(|getAllVendorList| * (|vendors| + |paymentTerms| + |allTaxSchemes|))
時間復雜度,這個有
O(|getAllVendorList| + |vendors| + |paymentTerms| + |allTaxSchemes|)
_vendorservice.GetXXX()但是,如果是對服務、RDBMS 等的查詢,那么它不是一個解決方案,并且您必須在每次迭代時調(diào)用它(因為數(shù)據(jù)可以更改)
- 1 回答
- 0 關注
- 122 瀏覽
添加回答
舉報