Tag: iqueryable

动态LINQ,选择函数,适用于Enumerable,但不适用于Queryable

我一直在摆弄动态LINQ一段时间了,但我还没有了解它的秘密。 我有一个我要解析的表达式,如下所示: “document.LineItems.Select(i => i.Credit).Sum();” 在解析这个问题时,我需要在LineItems Collection上调用Select函数。 我正在使用Expression.Call的工厂方法: Expression.Call( typeof(Queryable), “Select”, new Type[] { typeof(LineItem), typeof(decimal?) }, expr, Expression.Lambda(expression, new ParameterExpression[] { Expression.Parameter(typeof(LineItem) })); 此刻 expr: document.LineItems [ICollection] expression: LineItem.Credit [decimal?] 这些都没有实现。 我现在正在构建表达式树。 现在,问题是: 这个Expresssion.Call抛出和exception:“没有generics方法’选择’类型’System.Linq.Queryable’与提供的类型参数和参数兼容”; 我通过改变Expression.Call的第一个参数,通过在’System.Linq.Enumerable’而不是’Queryable’中查找’Select’来轻松解决它。 但是,这并不是我想要的。 我不希望所有LineItem都只计算Sum(),这显然是Enumerable的情况。 我想要Queryable工作。 另外,对于解析的最后一部分 – Sum(),我还需要使用Enumerable Sum(),因为Queryable Sum()会抛出相同的Exception。 我已经检查了MSDN,“选择”function的两个签名是相同的,所以我真的不明白为什么一个工作而另一个不工作。 任何帮助或指针都会受到重视。 问候,

合并从不同表中投射到一个实体的两个iqueryable

我试过这个答案 , 这一个和这个合并两个iqueryables。 但我总是收到以下错误: “Estudio”类型出现在单个LINQ to Entities查询中的两个结构不兼容的初始化中。 可以在同一查询中的两个位置初始化类型,但前提是在两个位置都设置了相同的属性,并且这些属性以相同的顺序设置。 我正在从两个不同但相似的entity framework实体(EXAMEN和EXPLORACION)映射到我的域实体Estudio,具有以下代码。 IQueryable listExamen = context.Set().Project().To(); IQueryable listExploracion = context.Set().Project().To(); var listCombined = listExamen.Concat(listExploracion); 无论如何使用两个列表的合并生成IQueryable(不可枚举)? 如果使用AsEnumerable() ,则在内存上执行以下filter(Order,Take等)。 所以我需要合并列表,但仍然能够将filter应用于合并列表而不执行查询。 //This will force the next condition is executed on memory var listCombined = listExamen.AsEnumerable().Concat(listExploracion); 那可能吗?

无法将类型’Program.Data.View’隐式转换为System.linq.iqueryable 。

目标/问题:我尝试使用First或FirstOrDefault仅从数据库返回1个结果。 我收到以下错误: 无法将类型’Program.Data.view’隐式转换为System.Linq.Iqueryable存在显式转换(您是否缺少转换) 我尝试过的内容:在查看了文档和许多SO文章之后,我尝试了不同的投射方式,包括下面的代码。 诸如无法将类型’System.Linq.IQueryable 隐式转换为的文章。 存在显式转换(您是否错过了演员?) 。 大多数文章都是从System.Linq.IQueryable 转到其他方面,而不是这个方向。 无论哪种方式铸造应该相对容易,我缺少什么?: IQueryable someVariable = db.view.First(m => m.ID == Search_ID); 我的方法签名是: public IQueryable GetDataFromQuery()

使用IQueryable创建动态查询

我正在尝试迭代字符串数组并动态创建IQueryable查询。 它很简单,但这里是我被困的地方 var query = context.QuestionsMetaDatas.AsQueryable(); var keywords=new List(){ “Test1″,”Test2” }; foreach(var key in keywords) { query=query.Where(a=>a.Text.Contains(key)); } 现在的问题是,当查询生成时,它编译为 select * from QuestionsMetaDatas where Text Like “Test1” AND Text Like “Test2” 而不是AND我希望查询生成OR …现在我该如何实现?

在EF 6中缺少QueryableExtensions

我无法调用EntityFramework 6提供的新QueryableExtensions ( ToListAsync , ForEachAsync ,…)但我可以调用其他人( Include , Intersect )。 我有一个System.Data.Entity的引用。 显然,我有一个较旧版本的System.Data.Entity ,以及最新版本的EntityFramework。 可能吗? 我的代码无法编译,我无法在对象浏览器中看到ForEachAsync方法。 我正在使用Visual Studio 2013,.Net 4.5,EntityFramework 6.1.3,Wpf。 编辑 entity framework已安装: 我已经尝试卸载然后重新安装包多次,重新启动visual studio。 还是行不通 编辑 在另一个项目(由此引用)中,我可以在对象浏览器中看到所需的IQueryableExtensions 。 如果我将此项目添加到我的解决方案中(在它只是一个引用之前),则对象浏览器中缺少所需的IQueryableExtensions 。

无法将System.Linq.IQueryable 类型隐式转换为字符串

我有两个名为Rank和CrewMembers的表。我想根据CrewMember的id获取Rank表中存在的rank的名称。我已经将crewId作为参数传递,并且在此基础上该方法将返回该特定船员的等级。这就是我的代码是 – public string GetRank(int CrewId) { string rank = (from r1 in context.Rank join r2 in context.CrewMember on r1.RankId equals r2.RankId where r2.CrewId == CrewId select r1.RankName); return rank; } 当我构建代码时,我得到以下错误 – 无法将System.Linq.IQueryable类型隐式转换为字符串 我哪里错了?

WebAPI OData $跳过自定义IQueryable double应用

我已经实现了一个通过WebAPI OData端点公开的自定义IQueryable。 控制器的Get()结构相当标准: [EnableQuery( AllowedQueryOptions = AllowedQueryOptions.Count | AllowedQueryOptions.Filter | AllowedQueryOptions.OrderBy | AllowedQueryOptions.Skip | AllowedQueryOptions.Top)] [ODataRoute] public PageResult Get(ODataQueryOptions queryOptions) { var bars = new QueryableData(_provider); var result = ((IQueryable)queryOptions .ApplyTo(bars, new ODataQuerySettings(new ODataQuerySettings { EnableConstantParameterization = false, EnsureStableOrdering = false }))).ToList(); var count = _provider.Count; return new PageResult(result, null, count); } 我看到的奇怪的行为是,在返回PageResult后应用查询字符串中的OData $ Skip。 […]

entity frameworkIQueryable与poco生成

我已经创建了一个T4模板,它为每个属性生成标准的Entities类和Interfaces,这样我就可以制作只包含我想要的数据的自定义poco对象。 我还创建了一个复制函数,它可以在实现所述实体接口的任何对象之间进行转换 生成的代码如下所示 //—————————————————————————— // // This code was generated from a template. // // Manual changes to this file may cause unexpected behavior in your application. // Manual changes to this file will be overwritten if the code is regenerated. // //—————————————————————————— namespace DomainModel { using System; using System.Collections.Generic; using System.Linq; public interface IRole […]

Enumerable.Empty ()AsQueryable已(); 此方法支持LINQ to Entities基础结构,不应在代码中直接使用

我收到运行时错误 此方法支持LINQ to Entities基础结构,不应在代码中直接使用。 描述:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 exception详细信息:System.InvalidOperationException:此方法支持LINQ to Entities基础结构,不应在代码中直接使用。 我试图通过在所有搜索字段上添加所有匹配的记录(将执行OR而不是AND )来生成查询而不是对每个搜索条件进行过滤。 public static IQueryable ApplySearch(this IQueryable queryable, SearchModel search) where T : class { var results = Enumerable.Empty().AsQueryable(); if (search != null) { if (search.PolicyNumber.HasValue && typeof (IPolicyNumber).IsAssignableFrom(queryable.ElementType)) { results = results.Union(queryable.SearchByPolicyNumber(search)); } if (search.UniqueId.HasValue && typeof (IUniqueId).IsAssignableFrom(queryable.ElementType)) { results = results.Union(queryable.SearchByUniqueId(search)); } if (!string.IsNullOrWhiteSpace(search.PostCode) […]

ASP MVC:服务应该返回IQueryable吗?

你怎么看? 如果您的DAO返回IQueryable以在控制器中使用它吗?