Sql LINQ:如何在ObjectCollection中联接嵌套列表

Sql LINQ:如何在ObjectCollection中联接嵌套列表,sql,linq,nested-lists,Sql,Linq,Nested Lists,不使用foreach循环就可以为以下问题定义LINQ语句吗 public class GroupObject { public String name; public List<String> letters; public void test() { List<GroupObject> myGroups = new List<GroupObject> { new GroupObject

不使用foreach循环就可以为以下问题定义LINQ语句吗

public class GroupObject
{
    public String name;
    public List<String> letters;

    public void test()
    {
        List<GroupObject> myGroups = new List<GroupObject> {
            new GroupObject {
                name="test1",
                letters=new List<String>{"x","y","z"}
            },
            new GroupObject {
                name="test2",
                letters=new List<String>{"l","m","n"}
            },
            new GroupObject {
                name="test3",
                letters=new List<String>{"m","x","z"}
            }
        };

        // LINQ problem 1: how to get a list of all 9 letters
        // List<string> allLetters = (from ...).ToList();

        // LINQ problem 2: how to get a list of all 6 DISTINCT letters
        // List<string> allDistictLetters = (from ...).ToList();
    }
}
公共类GroupObject
{
公共字符串名称;
公开名单信件;
公开无效测试()
{
List myGroups=新列表{
新组对象{
name=“test1”,
字母=新列表{“x”、“y”、“z”}
},
新组对象{
name=“test2”,
字母=新列表{“l”、“m”、“n”}
},
新组对象{
name=“test3”,
字母=新列表{“m”、“x”、“z”}
}
};
//LINQ问题1:如何获得所有9个字母的列表
//列出所有字母=(from….ToList();
//LINQ问题2:如何获得所有6个不同字母的列表
//列出所有distictLetters=(from….ToList();
}
}
在写这个问题时,我找到了解决问题的办法。我仍然会发布(并回答)这个问题,因为这个问题对我来说真是个麻烦。我在这里没有找到一个合适的现存问题

再见,
尤文

我相信这个问题可以通过
SelectMany
Distinct
解决

var allLetters = myGroups.SelectMany(go => go.letters);
var allUniqueLetters = allLetters.Distinct();

第二个变量名是tho。它将返回一个
“m”
实例,该实例在原始集合中不是唯一的;)

如上所述,我自己找到了答案:

List<string> allLetters = (from g in myGroups from l in g.letters select l).ToList();
List<string> allDistinctLetters = allLetters.Distinct().ToList();
List allLetters=(从MyGroup中的g开始,从g.letters中的l开始,选择l);
List allDistinctLetters=allLetters.Distinct().ToList();
我希望这对某人有帮助


再见,尤文

哇,你跑得真快!我试试看,很好用!它比我的解决方案短得多。即使对于那些不了解lambda的人来说,它可能更神秘。非常感谢@尤文图斯:不客气。我发现,
from…
选择器在变得比这复杂一点时很快变得非常神秘。如果这促使读者继续学习lambda在C#中的工作原理,那么您将为他们提供极大的帮助;)