Reputation: 3899
class Lesson {
int idLesson;
String nameLesson;
List<DayLesson> dayLesson;
Lesson({this.idLesson, this.dayLesson, this.nameLesson});
}
class DayLesson {
int idDay;
String nameDay;
DayLesson({this.idDay, this.nameDay});
}
List<DayLesson> listDay = [
DayLesson(idDay: 1, nameDay: 'Monday'),
DayLesson(idDay: 2, nameDay: 'Tuesday'),
DayLesson(idDay: 3, nameDay: 'Wednesday'),
DayLesson(idDay: 4, nameDay: 'Thursday'),
DayLesson(idDay: 5, nameDay: 'Friday'),
DayLesson(idDay: 6, nameDay: 'Saturday'),
DayLesson(idDay: 7, nameDay: 'Sunday'),
];
List<Lesson> listLesson = [
Lesson(
idLesson: 1,
nameLesson: 'Matematic',
dayLesson: [
DayLesson(idDay: 1, nameDay: 'Monday'),
DayLesson(idDay: 5, nameDay: 'Friday'),
],
),
Lesson(
idLesson: 2,
nameLesson: 'Indonesia Language',
dayLesson: [
DayLesson(idDay: 2, nameDay: 'Tuesday'),
DayLesson(idDay: 4, nameDay: 'Thursday'),
],
),
Lesson(
idLesson: 3,
nameLesson: 'Chemistry',
dayLesson: [
DayLesson(idDay: 3, nameDay: 'Wednesday'),
],
),
Lesson(
idLesson: 4,
nameLesson: 'Physics',
dayLesson: [
DayLesson(idDay: 4, nameDay: 'Thursday'),
DayLesson(idDay: 5, nameDay: 'Friday'),
],
),
Lesson(
idLesson: 5,
nameLesson: 'Basic Invesment',
dayLesson: [
DayLesson(idDay: 1, nameDay: 'Monday'),
],
),
];
In above code i have 2 class named Lesson
and DayLesson
. I want search in List<Lesson>
where in this list contain day with ID X. Something like listLesson.where((element)=>element.dayLesson.contain(1)).toList()
.
My expectation with above example will return 2 data , because in listDay have ID with value 1 :
[
Lesson(
idLesson: 1,
nameLesson: 'Matematic',
dayLesson: [
DayLesson(idDay: 1, nameDay: 'Monday'),
DayLesson(idDay: 5, nameDay: 'Friday'),
],
),
Lesson(
idLesson: 5,
nameLesson: 'Basic Invesment',
dayLesson: [
DayLesson(idDay: 1, nameDay: 'Monday'),
],
),
]
But the problem is, I always get empty list. Is my structure List
is the problem or am I miss something ?
Upvotes: 0
Views: 76
Reputation: 3703
I don't thing contains is a correct way to do it. Since you have a List nested inside a List, you will have to nest where and any operations.
List<Lesson> _findLessons(int dayLessonId) {
return listLesson
.where((element)=> element.dayLesson.any((dL) => dL.idDay == dayLessonId))
.toList();
}
Upvotes: 1