Entity Framework查询问题:如何获取同一ApplicableGrade的多条记录
解决Entity Framework查询同一条件下所有记录的问题
你的问题出在查询方法的使用上:FindAsync和FirstOrDefaultAsync都是只返回第一条匹配条件的实体,再加上你无意义地在foreach循环里重复执行相同查询(循环变量value根本没用到),自然每次都拿到同一条"Banking"记录,最终列表里全是重复值。
要获取所有ApplicableGrade为"A"的Name,直接一次性查询所有符合条件的记录即可,不需要重复循环查询:
// 方式1:先获取所有符合条件的实体,再提取Name var gradeRecords = await _repository.gradeRepository .Where(x => x.ApplicableGrade == "A") .ToListAsync(); foreach (var record in gradeRecords) { gradenames.Add(record.Name); } // 方式2:直接投影提取Name,更简洁高效 var gradenames = await _repository.gradeRepository .Where(x => x.ApplicableGrade == "A") .Select(x => x.Name) .ToListAsync();
关键说明:
Where方法会筛选出所有符合条件的记录,返回IQueryable类型的查询集合ToListAsync会触发数据库实际查询,并将结果转换为List<T>- 使用
Select直接投影Name字段,能减少数据库返回的数据量,提升查询效率
内容的提问来源于stack exchange,提问作者GIS Support EEDC
相关产品推荐
相关产品推荐

