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

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

過濾二維數(shù)組的技巧

過濾二維數(shù)組的技巧

C#
慕雪6442864 2023-09-09 16:33:11
下面是一個 JSON 示例: item: {   id: 1,   variants: [    {     id: 1,     prices: [      {       needle: 100      },      {       needle: 200      }     ]    }   ] }基本上我希望能夠選擇價格范圍內(nèi)的所有針值。有人能把我推向正確的方向嗎?如果價格維度不存在,我將能夠執(zhí)行以下操作:item.variants.Select(v => v.needle.ToString()))我嘗試過什么...item.variants.Where(x => x.prices != null)               .SelectMany(v =>                  v.prices.Select(p =>                    p.needle.ToString()                 ).Distinct()               )結(jié)果應(yīng)該是[0] [string] "100", [1] [string] "200"
查看完整描述

3 回答

?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗 獲得超10個贊

這應(yīng)該可以解決問題:


var result = structure.variants

                     // Throw away variants without prices

                    .Where(variant => variant.prices != null)

                    // For each variant, select all needle prices (.toString) and flatten it into 1D array

                    .SelectMany(variant => variant.prices.Select(price => price.needle.ToString()))

                    // And choose only unique prices

                    .Distinct();

對于這樣的結(jié)構(gòu):


var structure = new Item(

                new Variant(new Price(200), new Price(100), new Price(800)),

                new Variant(new Price(100), new Price(800), new Price(12))

            );

是輸出[ 200, 100, 800, 12 ]。


它是如何工作的?


.SelectMany基本上采用 array-inside-array 并將其轉(zhuǎn)換為普通數(shù)組。[ [1, 2], [3, 4] ] => [ 1, 2, 3, 4 ],并.Distinct丟棄重復(fù)的值。


我想出的代碼幾乎和你的一模一樣??雌饋砟阏谧?Distincton .Select,而不是 on .SelectMany。有什么不同?.Select選擇一個值(在本例中) - 對它調(diào)用 Distinct 是沒有意義的,這會刪除重復(fù)項。.SelectMany選擇許多值 - 所以如果你想在某個地方調(diào)用 Distinct,它應(yīng)該在 的結(jié)果上SelectMany。


查看完整回答
反對 回復(fù) 2023-09-09
?
米脂

TA貢獻(xiàn)1836條經(jīng)驗 獲得超3個贊

像這樣的事情怎么樣:

items.variants
    .Where(v => v.Prices != null)
    .SelectMany(v => v.prices)
    .Select(p => p.needle.ToString())
    .Distinct();

SelectMany將數(shù)組展平prices為單個IEnumerable<Price>.

Selectneedle值投影到IEnumerable<string>.

Distinct只得到不同的needle值。


查看完整回答
反對 回復(fù) 2023-09-09
?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗 獲得超22個贊

朝著正確方向的一個小推動可能是您在 select Many 中選擇超過 1 個元素,并使用 select 的迭代器參數(shù)來稍后獲取項目索引。例如:


var result = item.variants

    .Where(x => x.prices != null)

    .SelectMany(o => o.prices.Select(x => new {Type = x.needle.GetType(), Value = x.needle}))

    .Select((o, i) => $"[{i}] [{o.Type}] {o.Value}").ToList();


Console.WriteLine(string.Join(",\n", result));


查看完整回答
反對 回復(fù) 2023-09-09
  • 3 回答
  • 0 關(guān)注
  • 190 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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