2010-08-13 61 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是在你的会话状态的条件检查给定项目来告诉他们是否应该显示与否的功能。