2
我有兩個表(TABLE1,TABLE2-我知道唯一),它們分別具有一對多關係和兩個表的ID列之間的外鍵。如何使用謂詞生成器與linq2sql和OR運算符
使用LINQ2SQL我想選擇所有TABLE1項,使得其相應的TABLE2值包含在我通過它的列表中至少1項。
下面是我用一些示例代碼中LINQPad(真棒程序)來測試它不過正在錯誤NotSupportedException異常:用於查詢操作「任何」不支持過載。
long[] items = { 3, 5, 8 };
var predicate = PredicateBuilder.False<TABLE2>();
foreach (long i in items)
{
long t = i;
predicate = predicate.Or(att => att.ID == t);
}
//TABLE2.Where(predicate).Dump(); //works like a charm
IQueryable query =
from t1 in TABLE1
where t1.TABLE2.AsQueryable().Any(predicate) //problem with this line
select a;
query.Dump();
UPDATE
當使用LinqKit在LinqPad添加參考LinqKit.dll,取消包含PredicateBuilder然後還附加命名空間進口標籤下添加LinqKit。
在這裏找到了類似的問題http://stackoverflow.com/questions/2522079/generated-sql-with-predicatebuilder-linqpad-and-operator-any。沒有在VS中進行過測試,但似乎可能是我在LINQPad中編寫它的問題。 – David 2010-04-22 11:53:06