我的Silverlight應用程序(使用RIA服務)過濾我的結果時遇到了一些問題。這個想法是在客戶端上設置EntityQuery及其過濾器和調用加載。然而,這不適合我。使用Linq過濾父母的子女
繼承人我的代碼。
public void FireQuery(string filterValue)
{
EntityQuery<Parent> query = m_ParentDomainContext.GetParentQuery();
query = query.Where(p => p.Children.Any(c => c.Name.Contains(filterValue)));
m_ParentDomainContext.Load(query, Query_Completed, null);
}
編譯得很好,但是,運行時我得到「查詢運算符'任何'不支持。」例外。 有誰知道一個好的方法來過濾這樣嗎?再次,我正在尋找一種方法在客戶端上進行設置。
編輯:我要指出,我已經嘗試了一些其他的查詢以及與類似的結果:
query = query.Where(p => p.Children.Where(c => c.Name.Contains(filterValue)).Count() != 0);
query = query.Where(p => p.Children.Where(c => c.Name.Contains(filterValue)).FirstOrDefault != null);
query = query.Where(p => p.Children.Where(c => c.Name.Contains(filterValue)).Any());
查詢運算符「計數/ FirstOrDefault /任何」不支持。我很明顯在這裏丟失了一些東西......
我不知道很多關於RIA服務,但我認爲這是因爲沒有辦法來表示該查詢,以便它可以被髮送到服務器。也許你可以在服務器上創建查詢並將其展示給客戶端? – 2010-12-22 00:01:57
雖然我可以這樣做,問題是我可能(或可能不)有我想申請的多個過濾器。如果以上工作正常,則在客戶端動態地應用過濾器將會很簡單。發送一個變量列表的過濾器到服務器?我不太確定這會順利過去。 – 2010-12-22 15:34:58