首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用实体框架实现智能搜索

用实体框架实现智能搜索
EN

Stack Overflow用户
提问于 2017-03-28 05:24:03
回答 2查看 1.5K关注 0票数 1

我正试图在我的ApiController中实现搜索功能。我想要做的是:为客户端创建api,它将以单个字符串作为输入,比如"Nike 2016"。我的api应该只返回“耐克”品牌"2016“年度的记录。

下面是我的模型课。I使用实体框架.

代码语言:javascript
复制
class ProductEntity
    {
        public int Year { get; set; }
        public string TAGS { get; set; }
        public Dimension Dimension { get; set; }
        public int Rating { get; set; }
        public string UserId { get; set; }
        public string Brand { get; set; }
        public double NumberOfFloors { get; set; }
        public string CostOfBuilding { get; set; }
    }

    class Dimension
    {
        public double length { get; set; }
        public double width { get; set; }
    }

我尝试在所有列中使用“或”关键字进行搜索,但使用这种方法,我担心api会非常慢。我想要一种不影响性能的可伸缩方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-28 07:19:20

尝试创建过滤器并使用如下的过滤器参数初始化它

代码语言:javascript
复制
var filter = new Filte {Brand = ..., Year = ....}
........
    public class Filter
        {
            public string Brand { get; set; }
            public int? Year { get; set; }
            public IQueryable<ProductEntity> FilterObjects(IQueryable<ProductEntity> query)
            {
                if (!string.IsNullOrEmpty(Brand))
                    query = query.Where(x => x.Brand == Brand);
                if (Year.HasValue)
                    query = query.Where(x => x.Year = Year);

            }

        }

在它像这样调用FilterObjects之后

var Query = filter.FilterObjects(your dbset of entity);这样的DbSet<ProductEntity>或数据访问层db.(成员)将您的dbset作为list/enumarable of ProductEntity

Query.ToList()相比,wich将是对数据库的最终请求,并且不要忘记索引。

票数 1
EN

Stack Overflow用户

发布于 2019-06-27 16:07:43

我知道这是个老掉牙的问题,但我想这也许能帮上一些忙.

另一种选择可能是使用OData,对整个模型中所有基于实体的端点进行排序、过滤和分页。

http://odata.github.io/WebApi/

https://github.com/OData/WebApi

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43061197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档