我有以下代码,用于删除文本框自动填充扩展程序中使用的项目列表:
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”)
如何修改原始方法,以便自动完成功能考虑这些异常?
道歉,如果我的问题/例子有点朦胧。
感谢您收到任何帮助。
答案 0 :(得分:1)
不太确定我关注,但鉴于您不希望显示所有产品类别,您是否能够在linq查询的Where子句中过滤掉这些?
.Where(p => p.MemberId == memberid
&& p.LocationId == locationid
&& p.ACItem.Contains(prefixText)
&& shouldBeDisplayed(p))
ShouldBeDisplayed是一个函数,它使用会话状态中的条件检查给定项目,以判断它们是否应该显示。