使用 LINQ C# 从 List<object> 创建 Dict<enum, List<objec>>
Creating Dict<enum, List<objec>> from List<object> using LINQ C#
我有以下枚举和 class:
public enum SymbolTypeEnum
{
[Description("Forex")]
forex = 0,
[Description("Metals")]
metals = 1,
[Description("Commodities")]
commodities = 2,
[Description("Indices")]
indices = 3,
[Description("Cryptocurrency")]
cryptocurrency = 4,
[Description("Other")]
other = 5
}
public enum SymbolClassificationEnum
{
[Description("None")]
none = 0,
[Description("Major")]
major = 1,
[Description("Minor")]
minor = 2,
[Description("Exotic")]
exotic = 3
}
public class SymbolSettingsModel
{
[PrimaryKeyAttribute, Unique]
public string symbolName { get; set; }
public SymbolTypeEnum symbolType { get; set; }
public SymbolClassificationEnum symbolClassification { get; set; }
}
我有一个List<SymbolSettingsModel> symbolSettings;
我的目标是生成 Dictionary<SymbolTypeEnum, List<SymbolDescr>> typeSymbolsSettingsData;
SymbolDescr 是:
class SymbolDescr
{
public string symbol { get; set; }
public int classification { get; set; }
}
想法是将它们按symbolType分组并将其用作字典的Key,并生成SymbolDescr列表。到目前为止,这是我的代码:
typeSymbolsSettingsData = symbolSettings.GroupBy(p => p.symbolType)
.ToDictionary(p => p.Key, p => p.ToList());
我卡在这一步了,你知道我该怎么做吗?
您可以使用 Select
将您的 SymbolSettingsModel
个实例投影到 SymbolDescr
个实例中:
typeSymbolsSettingsData = symbolSettings
.GroupBy(p => p.symbolType)
.ToDictionary(
p => p.Key,
p => p.Select(x => new SymbolDescr
{
symbol = x.symbolName,
classification = (int)x.symbolClassification
})
.ToList());
您还应尽量遵守强制使用 PascalCase 的 .Net property naming convention。
我有以下枚举和 class:
public enum SymbolTypeEnum
{
[Description("Forex")]
forex = 0,
[Description("Metals")]
metals = 1,
[Description("Commodities")]
commodities = 2,
[Description("Indices")]
indices = 3,
[Description("Cryptocurrency")]
cryptocurrency = 4,
[Description("Other")]
other = 5
}
public enum SymbolClassificationEnum
{
[Description("None")]
none = 0,
[Description("Major")]
major = 1,
[Description("Minor")]
minor = 2,
[Description("Exotic")]
exotic = 3
}
public class SymbolSettingsModel
{
[PrimaryKeyAttribute, Unique]
public string symbolName { get; set; }
public SymbolTypeEnum symbolType { get; set; }
public SymbolClassificationEnum symbolClassification { get; set; }
}
我有一个List<SymbolSettingsModel> symbolSettings;
我的目标是生成 Dictionary<SymbolTypeEnum, List<SymbolDescr>> typeSymbolsSettingsData;
SymbolDescr 是:
class SymbolDescr
{
public string symbol { get; set; }
public int classification { get; set; }
}
想法是将它们按symbolType分组并将其用作字典的Key,并生成SymbolDescr列表。到目前为止,这是我的代码:
typeSymbolsSettingsData = symbolSettings.GroupBy(p => p.symbolType)
.ToDictionary(p => p.Key, p => p.ToList());
我卡在这一步了,你知道我该怎么做吗?
您可以使用 Select
将您的 SymbolSettingsModel
个实例投影到 SymbolDescr
个实例中:
typeSymbolsSettingsData = symbolSettings
.GroupBy(p => p.symbolType)
.ToDictionary(
p => p.Key,
p => p.Select(x => new SymbolDescr
{
symbol = x.symbolName,
classification = (int)x.symbolClassification
})
.ToList());
您还应尽量遵守强制使用 PascalCase 的 .Net property naming convention。