【发布时间】:2021-05-08 19:35:17
【问题描述】:
我相信标题没有多大帮助,我会在这里尝试更好地解释......希望你能帮助我。
我有这门课
public class ItemValue
{
public string SetId {get; set;}
public string ItemId {get; set;}
public string Value {get; set;}
}
我有一个像这个类的对象的集合
IEnumerable<ItemValue> = new List<ItemValue>()
{
new ItemValue
{
SetId = "S1",
ItemId = "I1",
Value = "S1I1V",
},
new ItemValue
{
SetId = "S1",
ItemId = "I2",
Value = "S1I2V",
},
new ItemValue
{
SetId = "S1",
ItemId = "I3",
Value = "S1I3V",
},
new ItemValue
{
SetId = "S2",
ItemId = "I1",
Value = "S2I1V",
},
new ItemValue
{
SetId = "S2",
ItemId = "I2",
Value = "S2I2V1",
},
new ItemValue
{
SetId = "S2",
ItemId = "I2",
Value = "S2I2V2",
},
new ItemValue
{
SetId = "S2",
ItemId = "V3",
Value = "S2I3V",
}
};
请注意,有 2 个实例的 SetId="S2" 和 ItemId="I2" 具有不同的值
我需要的是使用 LINQ 将此集合映射到类似的东西
var expectedResult = new Lookup<string, IDictionary<string, string>>()
{
["S1"] = new Dictionary<string, string>()
{
{ ["I1"] = "S1I1V" },
{ ["I2"] = "S1I2V" },
{ ["I3"] = "S1I3V" },
},
["S2"] = new Dictionary<string, string>()
{
{ ["I1"] = "S2I1V" },
{ ["I2"] = "S2I2V1" },
{ ["I3"] = "S2I3V" },
},
["S2"] = new Dictionary<string, string>()
{
{ ["I1"] = "S2I1V" },
{ ["I2"] = "S2I2V2" },
{ ["I3"] = "S2I3V" },
}
};
我自己并不擅长 LINQ,在一些不成功的 LINQ 试验和使用一堆 foreach 和 if 的丑陋解决方案之后,我现在联系您,请您对此有所了解。
如果您需要任何其他信息,请告诉我
非常感谢您!...
【问题讨论】:
标签: c# linq dictionary mapping ienumerable