第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

由于執(zhí)行時(shí)間很長(zhǎng),我該怎么做才能使這個(gè) foreach 循環(huán)運(yùn)行得更快?

由于執(zhí)行時(shí)間很長(zhǎng),我該怎么做才能使這個(gè) foreach 循環(huán)運(yùn)行得更快?

C#
倚天杖 2023-08-13 15:45:06
我該怎么做才能讓這個(gè)循環(huán)運(yùn)行得更快?    private void accessVendorGridData()    {        try        {            foreach (var item in getAllVendorList)            {                item.CurrencyName = "USD";                // Fetch Addresses in Vendor Grid                var Addr = _vendorservice.GetAllVendorAdd().Where(x => x.vendorId == item.Id).ToList();                if (Addr.Count > 0)                {                    item.VendorAddressLine = String.Format("{0}, {1}, {2}, {3}, {4}", Addr[0].Address, Addr[0].City, Addr[0].StateProvince, Addr[0].ZipPostalCode, Addr[0].CountryRegion);                }                // Fetch Payment terms in Vendor Grid                var paymentTerm = _vendorservice.GetAllPaymentTerms().Where(x => x.Id == item.PaymentTermId).ToList().SingleOrDefault();                if (paymentTerm != null)                {                    item.paymenttermitem = paymentTerm.Name;                }                // Fetch Tax Scheme in Vendor Grid                var taxscheme = _vendorservice.GetAllTaxScheme().Where(x => x.Id == item.TaxschemeId).ToList().SingleOrDefault();                if (taxscheme != null)                {                    item.TaxschemeName = taxscheme.TaxSchemaName;                }            }        }        catch (Exception ex)        {            _exLog.AddErrorLog(ex, "NewVendor, accessVendorGridData()");            ModernDialog.ShowMessage(ex.Message, "Error!", MessageBoxButton.OK);        }    }我該怎么做才能讓這個(gè)循環(huán)運(yùn)行得更快?我嘗試了 Parallel.ForEach 但在中間迷失了。有人可以幫忙嗎?
查看完整描述

1 回答

?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

您可以從循環(huán)中提取,作為字典,而不是在每次迭代時(shí)查詢: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;

  } 

}

您當(dāng)前的代碼有


O(|getAllVendorList| * (|vendors| + |paymentTerms| + |allTaxSchemes|))

時(shí)間復(fù)雜度,這個(gè)有


O(|getAllVendorList| + |vendors| + |paymentTerms| + |allTaxSchemes|)

_vendorservice.GetXXX()但是,如果是對(duì)服務(wù)、RDBMS 等的查詢,那么它不是一個(gè)解決方案,并且您必須在每次迭代時(shí)調(diào)用它(因?yàn)閿?shù)據(jù)可以更改)


查看完整回答
反對(duì) 回復(fù) 2023-08-13
  • 1 回答
  • 0 關(guān)注
  • 139 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)