var userDistricts = db.UserDistricts.Where(x => x.UserId == userId).ToList();
var availableDistricts = userDistricts.Select(y => y.DistrictId).Distinct().ToList();
var availableStudyYears = userDistricts.Select(y => y.StudyYearId).Distinct().ToList();
// This part doesn't work as-is. Needs to filter down the query based on whether or
// not both district and study year match an entry from the UserDistricts table.
query = query
.Where(c => availableDistricts.Contains(districtId) &&
availableStudyYears.Contains(studyYearId));
我有一个名为UserDistricts的表,它记录了学生应该访问的地区和学年。这里是一个例子的数据从它...
地区和学年是与其他表中的数据相匹配的id。
我试图做一个查询,过滤掉另一个包含大量数据的表,只返回用户应该通过匹配UserDistricts表中的学年和地区来访问的数据。
例如:如果有两个地区,一个称为Shady Oaks,一个称为Sunny Maple,则用户可以拥有Shady Oaks 2022,Shady Oaks 2023,Sunny Maple 2019,Sunny Maple 2022。查询最初包含这些地区所有年份的所有数据,我需要将其过滤为仅匹配地区和年份的数据(例如,用户不应该在查询结果中看到Sunny Maple 2023)。
有什么帮助可以使查询部分正确吗?
1条答案
按热度按时间stszievb1#
将查询合并为一个。而不是分别查询地区和研究年份,他们必须在同一时间为每个条目检查。
这还将导致对服务器的单个调用,而不是三个。