使用Linq从List列表字符串中获取不同的字符串列表

时间:2012-03-12 14:04:19

标签: linq predicate

我的列表集合如下

List<Class> classes = new List<Class>()
{
    new Class() 
    { 
        className = "A",
        students = new List<Student>()
        { 
            new Student{ name="SA"}, 
            new Student{ name="SB"},
            new Student{ name="SC"},
        }
    },
    new Class()
    {
        className = "B",
        students = new List<Student>()
        { 
            new Student{ name="SD"}, 
            new Student{ name="SA"},
            new Student{ name="SA"},
        }                   
    }
}

我希望中的Distinct学生名称使用格式为List<string> Linq 。我尝试进入单个linq查询但得到类似。List<List<string>>。我需要List<string>

1 个答案:

答案 0 :(得分:5)

应该是这样的:

var students = classes.SelectMany(p => p.Students).Select(p => p.Name).Distinct();

SelectMany合并List<Student>,第二个Select仅选择学生的姓名。