2010-06-17 61 views
0

我有兩個表Boxer和Prospect。拳擊手有一般的東西,如名稱和多巴等,BoxerId 雖然Prospect只包含一個值(此刻),這是一個boxerId。 如果拳擊手是潛在客戶(即將到來的拳擊手),那麼Id將會出現在潛在客戶名單中。iqueryable select /不工作

也能正常工作,但現在我要選擇那些前景

public static IQueryable<Boxer> IsProspect(this IQueryable<Boxer> query) 
    { 
     //this does not filter down to only prospects!!! 
     return query.Where(x => x.Prospect != null); 
    } 

所有拳手這就是我所說使用功能:

var repository = GetRepository<Boxer>(); 
var boxers = repository.Query().IsProspect(); 

我希望這將過濾我所有的收藏拳擊手到只是拳擊手是前景!

奇怪的是如果你想只有那些對象,其中IsProspect是真實的它並不過濾,但如果我將鼠標懸停在我的拳擊手反對和調試,我可以看到在看每一個拳擊手「IsProspect」真或正確 IsProspect Debug Example http://img534.imageshack.us/img534/4361/isprospect.png

回答

0

聽起來像你應該使用table-per-subclass inheritance

+0

我真的不知道我在這裏看到什麼幫助? – Steve 2010-06-17 22:35:42

+0

從您的問題描述中,聽起來像(概念上)您有一個「Boxer」域對象和一個「Prospect」派生的域對象。也就是說,「展望」類是從「Boxer」派生的。我重新閱讀你的問題,並意識到你使用NHibernate而不是LINQ to Entities,所以我改變了鏈接以指向相關的NH文檔。 – 2010-06-17 23:13:00

1

假然後用它作爲你的謂詞:

public static IQueryable<Boxer> IsProspect(this IQueryable<Boxer> query) 
{ 
    return query.Where(x => x.IsProspect); 
} 
+0

失敗,出現錯誤/沒有值工作回! {「無法解析屬性:IsProspect of:BensBoxing.Domain.Boxer」} – Steve 2010-06-17 21:26:26

0

超載datacontext,直接從您的datacontext對象

public partial class myDataContext 
{ 
     public IQueryable<Boxer> IsProspect() 
     { 
      return from tBoxer in myDataContext.tBoxer 
        where tBoxer.IsProspect == true    
        select tBoxer; 
     } 
} 

調用的函數,你會調用它像一個正常的函數調用,像這樣var db = new myDataConext();var prospects = db.IsProspect();