2010-08-13 43 views
0

項目我有下面的代碼,拉斷在文本框中自動完成擴展使用的物品清單:排除從自動完成的方法

return autocomplete.tblAutoCompletes 
      .Where(p => p.MemberId == memberid && p.LocationId == locationid && p.ACItem.Contains(prefixText)) 
      .OrderBy(p => p.ACItem) 
      .Select(p => p.ACItem) 
      .Take(count) 
      .ToArray(); 

凡MEMBERID和locationid是會話。

在這個項目列表中,我有一些我可能希望根據用戶的喜好排除。此首選項也被存儲爲會話。

所以,比如我有如下表:

ACItem ACColumn 
aa Product 
ab Product 
ac Product 
ad Status 
ae Status 
af Status 
ag Category 
ai Category 
aj Category 

的,如果我的「A」到我的文本框中,將顯示所有產品ACItems的類型。

但是,可能會出現這樣一種情況,我不希望用戶自動填充來顯示特定狀態和/或產品。例如,我不希望用戶看到「af」或類別「ai」的狀態。

我有這些喜好存儲爲一個會話時(即「DoNotDisplayaf」或「DoNotDisplayai」)

用戶登錄我如何修改我原來的方法,以便自動完成需要這些例外考慮?

道歉厚厚,如果我的問題/例子有點朦朧。

謝謝您收到的任何幫助。

回答

1

不太確定我關注,但由於您不希望顯示所有產品類別,您是不是可以在linq查詢的Where子句中篩選出這些內容?

.Where(p => p.MemberId == memberid 
    && p.LocationId == locationid 
    && p.ACItem.Contains(prefixText) 
    && shouldBeDisplayed(p)) 

ShouldBeDisplayed是在你的會話狀態的條件檢查給定項目來告訴他們是否應該顯示與否的功能。