早上好,
我有一個位置評論串列<>,并且我撰寫的 GroupBy 準確地將它們分組。但是,它只允許投影兩個專案,我找不到(谷歌搜索)如何投影其他屬性。
在查看 GroupBy 定義時,我什至不確定它是否是用于我想要的結果的正確擴展方法,但我找不到任何替代方法。
我的未分組集合是一個串列,我只是使用 json 表示法來傳達結構。
userLocationReviews {
userReview[0] {
BusinessId="1234",
BusinessName="Wonka Chocolate",
LocationId = "443456",
CityName="MyTown",
RatingVale=5
}
userReview[1] {...}
userReview[2] {...}
...
userReview[100] {...}
}
我寫了這個 GroupBy,它是正確的。
var groupedReviewedLocations = userLocationReviews.UserReviews.GroupBy(
p => p.LocationId,
p => p.RatingValue,
(locId, rating) => new {LocationId = locId, Ratings = rating.ToList() });
同樣,這是一個僅使用 json 來顯示結構而不是螢屏片段的串列。
groupedReviewLocations {
Non-Public Members {...},
ResultsView {
[0]{
LocationId: "1234",
Ratings: {
0:3,
1:5,
2:1,
3:5
}
},
[1]{...},
.....
[15]{...}
}
}
但是如上所述,我如何將其他屬性放入投影中?
groupedReviewLocations {
Non-Public Members {...},
ResultsView {
[0]{
LocationId: "1234",
Ratings: {},
BusinessName: "Wonka Chocolate",
CityName: "MyTown"
},
[1]{...},
.....
[15]{...}
}
}
TIA
uj5u.com熱心網友回復:
除掉
p => p.RatingValue,
完全線
分組由 LocationId 完成,但使用 GroupBy 的這個特殊多載:
GroupBy(
key-chooser,
value-chooser,
(Key, Values) list-processor
)
您在第二個引數(值選擇器)的輸出串列中指定您想要的屬性。
如果您改為使用此多載:
GroupBy(
key-chooser,
(Key, Values) list-processor
)
該值被自動確定為整個輸入物件。你也可以改變,p => p.RatingValue,所以它只是p => p,為了同樣的效果(如果這有助于你理解發生了什么)
(locId, rating)將 更改為lambda 的第二個引數是有意義的,(locId, reviewedLocations)現在將是共享鍵的位置物件串列,而不僅僅是評級串列。另外,因為第二個引數(你叫它rating,我叫它reviewedLocations)是一個集合/多個事物,所以給它一個復數名稱是有意義的
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/438265.html
上一篇:如何更快地優化以下代碼?
