假設我在數據庫中有一個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