Saya memiliki objek berikut dalam daftar:
public class DemoClass
{
public int GroupKey { get; set; }
public string DemoString { get; set; }
public object SomeOtherProperty { get; set; }
}
Sekarang, saya ingin membuat kamus berikut darinya:
Dictionary<int, List<DemoClass>>
Saya ingin mengelompokkan List<DemoClass>
berdasarkan properti GroupKey
, tetapi saya tidak mengerti bagaimana hal ini dilakukan dan beberapa bantuan.
Setelah berpikir sedikit, saya mencapai perilaku yang dibutuhkan dengan:
var groupedDemoClasses = from demoClass in mySepcialVariableWhichIsAListOfDemoClass
group demoClass by demoClass.GroupKey
into groupedDemoClass
select groupedDemoClass;
var neededDictionary = groupedDemoClass.ToDictionary(gdc => gdc.Key, gdc => gdc.ToList());
Tapi, apakah ada cara untuk membuatnya menjadi satu pernyataan?
Anda sudah membuatnya menjadi satu baris. Letakkan saja
ToDictionary
di akhir baris pertama Anda. Jika Anda ingin membuatnya lebih pendek, gunakan sintaks komposisi fungsional daripada sintaks kueri.sumber
Saya akan sedikit keluar dari topik di sini, tetapi saya sampai di utas ini karena saya sedang mencari cara untuk membuat kamus dari kamus di Linq, dan percakapan di sini membawa saya ke jawaban ...
Anda dapat menggunakan linq untuk membuat kamus multi-level, yang berguna untuk skenario di mana Anda memiliki lebih dari 1 kunci atau dimensi yang ingin Anda telusuri. Caranya adalah dengan membuat pengelompokan kemudian mengubahnya menjadi kamus, sebagai berikut:
Kueri yang dihasilkan dapat digunakan sebagai berikut:
Semoga ini bermanfaat bagi siapa pun yang membutuhkan pertanyaan semacam ini.
sumber