我有一個從串列創建字典的以下代碼。如何對公司的字典庫進行分組。如您所見,Company = "Adventure" 在串列中出現了兩次。所以總字典記錄將是 3
class Package
{
public string Company { get; set; }
public double Weight { get; set; }
public long TrackingNumber { get; set; }
}
public static void ToDictionaryEx1()
{
List<Package> packages =
new List<Package>
{ new Package { Company = "Adventure", Weight = 25.2, TrackingNumber = 89453312L },
new Package { Company = "Lucerne Publishing", Weight = 18.7, TrackingNumber = 89112755L },
new Package { Company = "Wingtip Toys", Weight = 6.0, TrackingNumber = 299456122L },
new Package { Company = "Adventure", Weight = 33.8, TrackingNumber = 4665518773L } };
// Create a Dictionary of Package objects,
// using TrackingNumber as the key.
Dictionary<long, Package> dictionary =
packages.ToDictionary(p => p.Company);
}
我正在嘗試分組,但有些無法正常作業
data.GroupBy(
x => x.Source,
(k, x) => new
{
Source = k,
Promotions = x.
.ToList()
})
.ToDictionary(x => x.Source, x => x.Promotions);
uj5u.com熱心網友回復:
不用把 Linq GroupBy 搞得這么復雜,簡單定義 key,然后根據 key 和分組值使用 ToDictionary。
Dictionary<string, List<Package>> dictionary = packages
.GroupBy(p => p.Company)
.ToDictionary(g => g.Key, g => g.ToList());
字典的鍵string不是 a long,因為您想按 CompanyName(它是一個字串)進行分組。
在線示例
uj5u.com熱心網友回復:
該ILookup結構允許您使用相同的鍵對專案進行分組:
packages.ToLookup(p => p.Company, p => p)
我不知道它是否適合您的需求,但是使用這種方法您不需要GroupBy顯式呼叫。
結果將如下所示:
Dumping object(System.Linq.Lookup`2[String,Package])
[
{
[
{
Company : Adventure
TrackingNumber : 89453312
Weight : 25.2
},
{
Company : Adventure
TrackingNumber : 4665518773
Weight : 33.8
}
] },
{
[
{
Company : Lucerne Publishing
TrackingNumber : 89112755
Weight : 18.7
}
] },
{
[
{
Company : Wingtip Toys
TrackingNumber : 299456122
Weight : 6
}
] }
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/494204.html
上一篇:在Dapper中模擬匿名型別引數并按引數的屬性過濾結果
下一篇:部分匹配LINQ查詢
