Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将sql附加到实体框架查询_Sql_Entity Framework_Linq To Entities - Fatal编程技术网

如何将sql附加到实体框架查询

如何将sql附加到实体框架查询,sql,entity-framework,linq-to-entities,Sql,Entity Framework,Linq To Entities,如何将原始sql(如条件)附加到实体框架linq查询 我愿意接受所有建议,因此不必将其附加到linq查询中。要点是通过添加一些自定义sql来过滤整个查询。使用IQueryable,我们可以将linq上的条件附加到实体查询中 private IQueryable<Customer> FilterList(IQueryable<Customer> customer, List<string> filter, string filterValue)

如何将原始sql(如条件)附加到实体框架linq查询


我愿意接受所有建议,因此不必将其附加到linq查询中。要点是通过添加一些自定义sql来过滤整个查询。

使用IQueryable,我们可以将linq上的条件附加到实体查询中

 private IQueryable<Customer> FilterList(IQueryable<Customer> customer, List<string> filter, string filterValue)
            {
                IQueryable<Customer> query = new List<Customer>().AsQueryable();            

                if (filter == null || string.IsNullOrEmpty(filterValue))
                {
                    return customer;
                }

                var filterLower = filter.First().ToLower();

                filterValue = filterValue.ToLower();

                if (filterLower.Contains("retail") || (filterLower.Contains("distributor"))
                {
                    return customer.Where(x => (!string.IsNullOrEmpty(x.Retail) && x.Retail.Contains(filterValue)) || (!string.IsNullOrEmpty(x.Distributor) && x.Distributor.Contains(filterValue)));
                }

                if (filterLower.Contains("retail"))
                {
                    query = customer.Where( x=> !string.IsNullOrEmpty(x.Distributor) && x.Distributor.Contains(filterValue));
                }

                if (filterLower.Contains("distributor"))
                {
                    query = customer.Where(x => !string.IsNullOrEmpty(x.Retail) && x.Retail.Contains(filterValue)).Union(query);
                }
               return query;
    }
专用IQueryable筛选器列表(IQueryable客户、列表筛选器、字符串筛选器值)
{
IQueryable query=new List().AsQueryable();
if(filter==null | | string.IsNullOrEmpty(filterValue))
{
退货客户;
}
var filterLower=filter.First().ToLower();
filterValue=filterValue.ToLower();
if(filterLower.Contains(“零售”)| |(filterLower.Contains(“分销商”))
{
返回customer.Where(x=>(!string.IsNullOrEmpty(x.Retail)和&x.Retail.Contains(filterValue))| |(!string.IsNullOrEmpty(x.Distributor)和&x.Distributor.Contains(filterValue));
}
if(filterLower.Contains(“零售”))
{
query=customer.Where(x=>!string.IsNullOrEmpty(x.Distributor)和&x.Distributor.Contains(filterValue));
}
if(filterLower.Contains(“分发服务器”))
{
query=customer.Where(x=>!string.IsNullOrEmpty(x.Retail)和&x.Retail.Contains(filterValue)).Union(查询);
}
返回查询;
}

只是为了跟进我的研究和EF团队最近的回应,是的,你可以使用拦截器来完成这项工作,但很难做到这一点,更不用说不切实际和低效了。像我使用的其他ORM一样,使用字段表达式来简化注入是很好的。是的,如果我知道这是定制的,那就是这种情况呃,对象,我更多地考虑将原始sql替换为字段。