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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

C#
倚天杖 2023-08-13 15:45:06
我該怎么做才能讓這個循環(huá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);        }    }我該怎么做才能讓這個循環(huán)運行得更快?我嘗試了 Parallel.ForEach 但在中間迷失了。有人可以幫忙嗎?
查看完整描述

1 回答

?
jeck貓

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ù)可以更改)


查看完整回答
反對 回復 2023-08-13
  • 1 回答
  • 0 關注
  • 122 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號