#linq
#linq
Вопрос:
Возникли проблемы при попытке преобразовать foreach
цикл в linq:
IList<DateTime> dicommentdates = new List<DateTime>();
foreach (DiaryEntry dEnt in DiaryEntries)
{
if (dEnt.EnteredInYearGroup == this.YearGroup)
{
foreach (DiaryEntryComment dcom in dEnt.DiaryEntryComments)
{
//add all the comments for this year group
dicommentdates.Add(dcom.DateEntered);
}
}
}
Любая помощь очень ценится.
Ответ №1:
Попробуйте это:
List<DateTime> diCommentDates = DiaryEntries.Where(dEnt => dEnt.EnteredInYearGroup == this.YearGroup)
.SelectMany(dEnt => dEnt.DiaryEntryComments)
.Select(dCom => dCom.DateEntered)
.ToList();
Комментарии:
1. var commentDate = this . DiaryEntries . Где(de => de.EnteredInYearGroup == this. Группа лет) . Выберите MANY(com => com. DiaryEntryComments) . Выберите(cd => cd.DateEntered) .DefaultIfEmpty() .Max(); возвращает commentDate; Да, спасибо, в итоге я изменил его, чтобы найти последнюю дату. Спасибо
Ответ №2:
IList<DateTime> dicommentdates = DiaryEntries
.Where( x=> x.EnteredInYearGroup == this.YearGroup)
.SelectMany(x => x.DiaryEntryComments)
.Select(x => x.DateEntered)
.ToList()
Ответ №3:
Это должно сделать это:
IList<DateTime> dicommentdates =
(
from dEnt in DiaryEntries
where dEnt.EnteredInYearGroup == this.YearGroup
from dcom in dEnt.DiaryEntryComments
select dcom.DateEntered
).ToList();
Ответ №4:
Должно работать следующее:
dicommentdates.AddRange(
DiaryEntries.Where(dEnt => dEnt.EnteredInYearGroup == this.YearGroup)
.SelectMany(dEnt => dEnt.DiaryEntryComments)).Select(dcom=> dcom.DateEntered);
Ответ №5:
Я полагаю, что простейшей формой было бы:
var dates =
from entry in DiaryEntries
where entry.YearGroup == YearGroup
select entry.DiaryEntryComments.DateEntered;
Комментарии:
1. var commentDate = this . DiaryEntries . Где(de => de.EnteredInYearGroup == this. Группа лет) . Выберите MANY(com => com. DiaryEntryComments) . Выберите(cd => cd.DateEntered) .DefaultIfEmpty() .Max(); возвращает commentDate; Я использовал его, чтобы вернуть только максимальное значение, поэтому в итоге получил это. Спасибо.