如何使用LINQ拼合一个包含另一个列表的列表?

时间:2019-04-04 15:54:25

标签: c# linq

我有一个IJapaneseDictionaryEntry对象的列表,如下所述。其中是IKanji个对象。

public interface IJapaneseDictionaryEntry
{
    int Sequence { get; }
    IEnumerable<IKanji> Kanjis { get; }
    IEnumerable<IReading> Readings { get; }
    IEnumerable<ISense> Senses { get; }
}

每个对象都包含IKanji个对象的列表

public interface IKanji
{
    string Text { get; }
    IEnumerable<KanjiInformation> Informations { get; }
    IEnumerable<Priority> Priorities { get; }
}

List<IJapaneseDictionaryEntry> entries = dictionary.GetEntries().ToList();

有人可以告诉我如何获得汉字列表中所有Text值的列表吗?

换句话说,如果条目中有两个对象,并且第一个对象有一个包含三个条目的汉字列表,第二个对象是包含两个条目的汉字列表,那么我想看到的是一个包含5行汉字的列表。解释的方式是我想在entries

中看到每个汉字的单个列表

1 个答案:

答案 0 :(得分:4)

您可以使用SelectMany方法将多个列表展平为一个列表。在这种情况下,您可以执行以下操作:

var items = dictionary.GetEntries()
                      .SelectMany(x => x.Kanjis)
                      .Select(x => x.Text)