我有一种在 Linq 中经常使用的请求:
我需要一组数据,它们的 ID(或任何其他字段)位于项目列表中。这是一个繁重的要求,因为我有很多(使用过的) Include 来加载数据。
举个例子:
我有一张桌子,有这种结构:
Id; Name; Age; ...
这个表是几个用外键链接的表,我需要加载这些数据:汽车,公司,地址,...
现在我想检索具有特殊年龄的人的所有数据:
List<int> ages = new List<int>(){7,17,27,37,47,57,67,77,87};
using (MyDatabaseEntities context = new MyDatabaseEntities ())
{
return context.Persons.Include("Car").Include("Company").Include("Address")
.Where(p=>ages.Contains(p.Age)).ToList();
}
问题是我的印象是 Linq 不知道我的“年龄”列表不会改变,然后下载完整的人员列表,以及他们的所有数据(汽车、公司、...)然后检查每个结果,如果它有正确的年龄。
所以。
- 我对吗?
- 如何避免这种情况?