我有以下2类,其是相互联系的对方,IEnumerable的<string>给出结果与值[ “1”, “1”],它应该得到[ “1”, “2”]
public class Class1
{
public List<Class2> ClassTwo { get; set; }
}
public class Class2
{
public string Name { get; set; }
public List<Class3> ClassThree { get; set; }
}
public class Class3
{
public string Name { get; set; }
public string Data { get; set; }
}
然后我们有一个以上的类,如下面的数据,
Class1 collectionRequest = new Class1()
{
ClassTwo = new List<Class2>
{
new Class2 { Name = "1", ClassThree = new List<Class3> { new Class3 { Name = "A", Data = "X" } } },
new Class2 { Name = "2", ClassThree = new List<Class3> { new Class3 { Name = "A", Data = "X" } } },
new Class2 { Name = "3", ClassThree = new List<Class3> { new Class3 { Name = "B", Data = "Y" } } }
}
};
现在,我正在下面LINQ,
var config = collectionRequest.ClassTwo
.SelectMany(cp => cp.ClassThree)
.GroupBy(cfg => cfg.Name)
.ToDictionary(g => g.Key,
g => g
.ToLookup(cfg => cfg.Data,
cfg => collectionRequest.ClassTwo
.FirstOrDefault().Name));
当我EXEC在下面,它给我IEnumerable的值[“1”,“1”],但我想返回值为IEnumerable [“1”,“2”]。
LINQ需要进行哪些更改?
var data = config["A"]["X"]; // gives IEnumerable<string> with values ["1","1"]
查找中的'value'总是'collectionRequest.ClassTwo.FirstOrDefault()。Name'。这是'1'。所以它正在做你所说的。你究竟在做什么? LINQ很难遵循。 –
你是计算机科学的主要问题是计算机没有做你想做的事情,但是你告诉它做什么。 –
如何修改此:cfg => collectionRequest.ClassTwo.FirstOrDefault()。Name –