Могу ли я использовать LINQ для предоставления мне необъектного представления элементов в СПИСКЕ?

#c# #linq

#c# #linq

Вопрос:

У меня есть эти объекты:

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

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

Что я хотел бы сделать, так это перебрать список IJapaneseDictionary
и получить Text все Kanjis . Что-то вроде этого:

 Seq  KanjiText
1    abc
1    def
2    ghi
  

Я могу выполнить итерацию по списку следующим образом:

 public static List<IJapaneseDictionaryEntry> jmdict;
foreach (var item in jmdict) 
  

Я знаком с

 var a = item.SelectMany(x => x.Kanjis)
  

Но могу ли я получить кандзи один за другим и вывести что-то вроде этого для каждого элемента, используя LINQ, или мне нужно иметь другой foreach для этого:

 Console.WriteLine(seq);
Console.WriteLine(kanji); 
  

Ответ №1:

Я не слишком уверен, что правильно понял, что вы имеете в виду, но я думаю, что это то, что вы ищете:

 var result = jmdict.SelectMany(entry => entry.Kanjis.Select(k => (entry.Sequence, k.Text)));