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

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

了解 Linq 鏈接語法中的 GroupJoin 和 Join(家庭作業(yè))

了解 Linq 鏈接語法中的 GroupJoin 和 Join(家庭作業(yè))

C#
Smart貓小萌 2023-04-29 18:08:45
我需要幫助來理解 GroupJoin 的第四個參數(shù)。據(jù)我所知,到目前為止 GroupJoin 有 4 個參數(shù): (1, 2) - 第一個是輔助列表,第二個參數(shù)是一個 Func,它從第一個對象類型返回鍵,換句話說,在這種情況下從第一個列表返回(人們)。(3, 4) 一個 Func,在本例中返回第二個列表中的第二個對象類型的鍵(項目),以及一個將分組對象與組本身一起存儲的函數(shù)(我無法理解這部分的代碼) . 考慮到這一點并具有以下代碼:var products = new Product[]{    new Product { Id = 1, Type = "Phone", Model = "OnePlus", Price = 1000 },    new Product { Id = 2, Type = "Phone", Model = "Apple", Price = 2000 },    new Product { Id = 3, Type = "Phone", Model = "Samsung", Price = 1500 },    new Product { Id = 4, Type = "TV", Model = "Samsung 32", Price = 200 },};var people = new Person[]{    new Person { Id = 1, Name = "Ivan Ivanov", Money = 150000 },    new Person { Id = 2, Name = "Dragan Draganov", Money = 250000 },    new Person { Id = 3, Name = "Ivelin Ivelinov", Money = 350000 }};var items = new Item[]{    new Item { PersonId = 1, ProductId = 1, Amount = 1 },    new Item { PersonId = 1, ProductId = 4, Amount = 1 },    new Item { PersonId = 1, ProductId = 5, Amount = 1 },    new Item { PersonId = 1, ProductId = 7, Amount = 1 },    new Item { PersonId = 2, ProductId = 2, Amount = 1 },};詢問:var productOwnerList = people    .GroupJoin(        items,        o => o.Id,        i => i.PersonId,        (o, i) => new   <--- (**)                    {            Person = o,            Products = i                .Join(products,                    o1 => o1.ProductId,                    i2 => i2.Id,                 (o1, i2) => i2)          <--- (*)                .ToArray()        })    .ToArray();  順便提一下,我只發(fā)布了幾行數(shù)據(jù)。我需要幫助來理解 join 方法的第四個參數(shù)在這里執(zhí)行的是什么 -> (*) (將分組對象與組本身一起存儲)?當(dāng)我看到結(jié)果時,我看到它把所有人員 ID 與產(chǎn)品密鑰關(guān)聯(lián)起來,并根據(jù)項目列表(一對多)加入兩個列表。但我無法理解這一行的確切含義 (o1, o2) => i2)。很明顯在做什么(將所有與個人 ID 關(guān)聯(lián)的項目放入每個人的數(shù)組 (items[]) 中。但是這里的“幕后”是什么?還有一個關(guān)于 (**) 這一行的問題,它正在創(chuàng)建新的對象,這是一個匿名類,如果不是,它是什么。
查看完整描述

1 回答

?
12345678_0001

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

第四個參數(shù)——映射到文檔中的第五個參數(shù)(因為第一個參數(shù)是擴(kuò)展方法調(diào)用的目標(biāo))只是結(jié)果選擇器。這是一個接受兩個參數(shù)的函數(shù):第一個是“外部”序列的一個元素(在你的例子中是數(shù)組),第二個是“內(nèi)部”序列(在你的例子中是數(shù)組)的元素序列,它們具有相同的元素鍵作為外部元素。該函數(shù)應(yīng)返回一個“結(jié)果”元素,方法調(diào)用的總體結(jié)果是這些結(jié)果的序列。peopleitems

每個“外部”元素都會調(diào)用一次該函數(shù),因此您將擁有:

  • 第一次調(diào)用:人員 ID 1,以及 ID 為 1、4、5、7 的產(chǎn)品

  • 第二次調(diào)用:人 ID 2,ID 2 的產(chǎn)品

  • 第三次調(diào)用:人員 ID 3 和一個空的產(chǎn)品序列

您的查詢很復(fù)雜,因為您正在為結(jié)果使用匿名類型,并使用另一個查詢構(gòu)造匿名類型的實例。這是一個可能有助于澄清的更簡單的查詢:

var?productOwnerList?=?people
????.GroupJoin(
????????items,
????????o?=>?o.Id,
????????i?=>?i.PersonId,
????????(person,?items)?=>?$"{person.Id}:?{string.Join(",",?items.Select(item?=>?item.ProductId))}"
????.ToArray();


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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