假设我在数据库中有一个Person记录,并且该人员有一个Age字段。LINQ如何查询一个值是否在一个范围列表之间?
现在我有一个页面允许我筛选特定年龄段的人。
例如,我可以选择多个范围选择,例如“0-10”,“11-20”,“31-40”。
所以在这种情况下,我会找回0到20之间以及30到40但不是21-30的人员列表。
我已经采取了年龄范围,人口范围的列表,看起来像这样:
class AgeRange
{
int Min { get; set; }
int Max { get; set; }
}
List<AgeRange> ageRanges = GetAgeRanges();
我使用LINQ到SQL对我的数据库访问和查询,但我无法弄清楚如何查询范围。
我想要做这样的事情,当然,这是不行的,因为我无法查询我的本地值对SQL值:与PredicateBuilder
var query = from person in db.People
where ageRanges.Where(ages => person.Age >= ages.Min && person.Age <= ages.Max).Any())
select person;
您收到了什么确切的错误? – 2010-10-28 15:29:36
NotSupportedException - 本地序列不能用于除Contains运算符之外的查询运算符的LINQ to SQL实现。 – Makotosan 2010-10-28 15:34:40
为什么不能根据db值查询你的本地值?我认为你需要做的是在AgeRanges集合的循环内进行查询,并使用Linq来联合查询。我得看看我能否拿出一个例子,因为我从来没有这样做过......(我的意思是工会) – EJC 2010-10-28 15:37:02