如何在另一种类型的列表列表中选择所有不同的字符串?

1 c# linq list

LINQ我还是很新.我有以下"简化"数据结构:

List<List<Field>> myData = new List<List<Field>>();
Run Code Online (Sandbox Code Playgroud)

Field由两个字符串成员组成,TypeName.

我的目标是获得一个List<string>包含Name对应于给定的所有不同的Type.我的第一个方法是:

var test = myData
  .Where(a => a.FindAll(b => b.Type.Equals("testType"))
  .Select(c => c.Name)
  .Distinct());
Run Code Online (Sandbox Code Playgroud)

有人对我有暗示吗?=)

juh*_*arr 5

您只需要用来SelectMany展平列表列表,然后照常进行

var test = myData.SelectMany(x => x)
    .Where(x => x.Type == "testType")
    .Select(x => x.Name)
    .Distinct()
    .ToList();
Run Code Online (Sandbox Code Playgroud)

或者在查询语法中

var test = (from subList in myData
            from item in subList
            where item.Type == "testType"
            select item.Name).Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)