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