如何使用LINQ检索包含列表中列表的特定属性的条目?

时间:2019-04-04 08:10:31

标签: c# linq

我有一个IJapaneseDictionaryEntry对象的列表,如下所述。在其中的IKanji对象包含Priorites对象。

我有一件非常困难的事情想做,并且希望得到任何建议。我想做的是从我创建的列表Priority中检索具有entries为“ Frequency3”的条目的条目。

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();

以下是我认为可能有助于解释其内容的一种观点:

enter image description here

我希望这里的信息足够,因为似乎很难解释我需要检索的内容。

2 个答案:

答案 0 :(得分:2)

这将返回至少有1个Kanjis且其优先级包含Frequency3的条目:

var result = entries.Where(e => e.Kanjis.Any(k => k.Priorities.Contains(Priority.Frequency3))).ToList();

答案 1 :(得分:1)

大概是这样的:

entries.Select(c => c.Kanjis.Where(x => x.Priorities.Contains(Priority.Frequency3)));