【问题标题】:Exclude items from autocomplete method从自动完成方法中排除项目
【发布时间】:2011-03-29 11:02:42
【问题描述】:

我有以下代码可以提取文本框自动完成扩展器中使用的项目列表:

    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”)

如何修改我的原始方法,以便自动完成功能将这些异常考虑在内?

抱歉,如果我的问题/示例有点模糊,请原谅。

感谢您提供的任何帮助。

【问题讨论】:

    标签: c# linq methods autocomplete


    【解决方案1】:

    不太确定我是否遵循,但鉴于您不希望显示所有产品类别,您不能在 linq 查询的 Where 子句中过滤掉这些产品类别吗?

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

    ShouldBeDisplayed 是一个函数,它根据会话状态中的条件检查给定项目,以判断它们是否应该显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 2021-04-05
      • 1970-01-01
      • 2019-06-14
      • 2019-09-05
      • 2018-12-29
      • 2011-07-11
      相关资源
      最近更新 更多