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

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

不確定如何正確地將數(shù)據(jù)提取到包含 string、int 和 double 屬性的類列表中

不確定如何正確地將數(shù)據(jù)提取到包含 string、int 和 double 屬性的類列表中

C#
偶然的你 2023-08-20 14:21:26
我正在使用 asp.net MVC,試圖制作一個表格來顯示品牌在幾天內(nèi)每天的總利潤,并且我正在努力解決如何包含品牌凈利潤為 0 的日子。在我查詢商店在給定時間范圍內(nèi)的購買總數(shù)后,在名為purchaseQuery的變量中,它為我提供了品牌名稱、購買日期(作為整數(shù))、該商品的價格以及該商品的數(shù)量在那次交易中購買的。假設(shè)每個品牌只銷售一種產(chǎn)品,并且該產(chǎn)品的價格每天都會波動。該代碼位于該查詢之后。purchasedItems = new List<BrandsTransactionItem>();foreach (var query in purchaseQuery){BrandsTransactionItem tempItem;tempItem = purchasedItems.Where(e => e.day == query.day).Where(e => e.brandName == query.brandName).FirstOrDefault();//If item not in list already, if (tempItem == null){   purchasedItems.Add(new BrandsTransactionItem()   {    brandName = query.brandName,    day = query.day,    totalPurchased = query.TotalPurchased,    costOfItem = query.costOfItem   });}// if it already exists, just add to amount purchasedelse{  tempItem.totalPurchased += query.totalPurchased;}}foreach (var item in purchasedItems){  double dailyProfit = (double)(item.totalPurchased * item.costOfItem);  dailyProfit = Math.Round(dailyProfit, 2); // make it decimal of 2  // Items is the list that I want to display in MVC  Items.Add(new BrandsProfit(){  brandName = item.brandName,  day = item.day,  totalDailyProfit = dailyProfit  });}我想要進行轉(zhuǎn)換,以便 BrandsProfit 具有名稱、日期列表以及與每一天相對應(yīng)的每日利潤列表。這樣,商品列表中的每個商品都將具有唯一的品牌名稱,因為它將適用于每次購買,而不是僅適用于購買該品牌商品的日期。我覺得我把事情變得過于復(fù)雜了,我主要擔(dān)心的是,如果一個品牌一天有 0 次購買,我可能會得到一個大小為 5 的天數(shù)列表,以及一個大小為 的購買列表4、我需要它們的尺寸相同。感謝您的幫助,并感謝您花時間閱讀我的問題。
查看完整描述

1 回答

?
絕地?zé)o雙

TA貢獻1946條經(jīng)驗 獲得超4個贊

此類問題非常適合使用 LINQ。


下面的 LINQ 查詢首先創(chuàng)建不同日期和品牌名稱的外連接。這為我們提供了全天可以加入的所有品牌的列表。這樣,每個品牌都會有相同的天數(shù),即使它在某一天從未售出任何商品。


然后,它會根據(jù)該品牌/日期列表加入購買,如果當天沒有記錄該品牌的購買,則會使用 來創(chuàng)建零成本/數(shù)量的替代購買DefaultIfEmpty。


然后,該連接的結(jié)果將被投影到對象列表中BrandsProfit。


例如,如果某一天沒有購買某個品牌,您會注意到在示例數(shù)據(jù)列表中,“2”天的品牌“B”被注釋掉了;但在結(jié)果中,“2”天仍然存在品牌“B”的行,每日總利潤為零。


void Main()

{

    var purchases = new List<Purchase>() {

        new Purchase() { BrandName = "A", CostOfItem = 1.13M, Day = 1, TotalPurchased = 125 },

        new Purchase() { BrandName = "B", CostOfItem = 1.52M, Day = 1, TotalPurchased = 165 },

        new Purchase() { BrandName = "C", CostOfItem = 1.90M, Day = 1, TotalPurchased = 836 },

        new Purchase() { BrandName = "A", CostOfItem = 1.74M, Day = 2, TotalPurchased = 583 },

        //new Purchase() { BrandName = "B", CostOfItem = 1.52M, Day = 2, TotalPurchased = 785 },

        new Purchase() { BrandName = "C", CostOfItem = 1.42M, Day = 2, TotalPurchased = 369 },

        new Purchase() { BrandName = "A", CostOfItem = 1.93M, Day = 3, TotalPurchased = 789 },

        new Purchase() { BrandName = "B", CostOfItem = 1.87M, Day = 3, TotalPurchased = 739 },

        new Purchase() { BrandName = "C", CostOfItem = 1.78M, Day = 3, TotalPurchased = 436 },

    };


    var results = from day in purchases.Select(x => x.Day).Distinct()

                  from brand in purchases.Select(x => x.BrandName).Distinct()

                  join purchase in purchases on new { Brand = brand, Day = day } equals new { Brand = purchase.BrandName, Day = purchase.Day } into j

                  from result in j.DefaultIfEmpty(new Purchase() { BrandName = brand, Day = day, TotalPurchased = 0, CostOfItem = 0 })

                  select new BrandsProfit()

                  {

                      BrandName = result.BrandName,

                      Day = result.Day,

                      TotalDailyProfit = result.TotalPurchased * result.CostOfItem

                  };


    Debug.WriteLine(JsonConvert.SerializeObject(results, Newtonsoft.Json.Formatting.Indented));

}


class Purchase

{

    public string BrandName { get; set; }

    public int Day { get; set; }

    public int TotalPurchased { get; set; }

    public decimal CostOfItem { get; set; }

}


class BrandsProfit

{

    public string BrandName { get; set; }

    public int Day { get; set; }

    public decimal TotalDailyProfit { get; set; }

}

產(chǎn)生以下結(jié)果:-


[

  {

    "BrandName": "A",

    "Day": 1,

    "TotalDailyProfit": 141.25

  },

  {

    "BrandName": "B",

    "Day": 1,

    "TotalDailyProfit": 250.80

  },

  {

    "BrandName": "C",

    "Day": 1,

    "TotalDailyProfit": 1588.40

  },

  {

    "BrandName": "A",

    "Day": 2,

    "TotalDailyProfit": 1014.42

  },

  {

    "BrandName": "B",

    "Day": 2,

    "TotalDailyProfit": 0.0

  },

  {

    "BrandName": "C",

    "Day": 2,

    "TotalDailyProfit": 523.98

  },

  {

    "BrandName": "A",

    "Day": 3,

    "TotalDailyProfit": 1522.77

  },

  {

    "BrandName": "B",

    "Day": 3,

    "TotalDailyProfit": 1381.93

  },

  {

    "BrandName": "C",

    "Day": 3,

    "TotalDailyProfit": 776.08

  }

]

如果您不想繼續(xù)使用上面的示例,您可以考慮更新用于生成數(shù)據(jù)的源查詢,以purchaseQuery使用像上面這樣的外連接...這樣您就會有一個行代表品牌/天的每個組合,即使某個品牌從未在特定日期銷售過。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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