我有以下代码来获取文本框自动完成扩展器中使用的项目列表:
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
但是,可能会有这样一种情况:我不希望用户自动完成显示某个状态和/或产品。例如,我不希望用户看到状态"af“或类别"ai”。
当用户登录时,我将这些首选项存储为会话(即"DoNotDisplayaf“或"DoNotDisplayai")
我如何修改我的原始方法,以使自动补全将这些异常考虑在内?
如果我的问题/例子有点模糊,我很抱歉。
感谢您的帮助。
发布于 2010-08-13 20:55:45
我不太确定我是否理解,但是如果您不希望显示所有产品类别,那么您不能在linq查询的Where子句中过滤掉这些类别吗?
.Where(p => p.MemberId == memberid
&& p.LocationId == locationid
&& p.ACItem.Contains(prefixText)
&& shouldBeDisplayed(p))
ShouldBeDisplayed是一个函数,它根据会话状态中的条件检查给定的项,以确定它们是否应该显示。
https://stackoverflow.com/questions/3476893
复制相似问题