Tag: linq to entities

Linq:计算包含0行的行数

我想使用Linq to Entities将活动列表汇总到上周的Day发生次数。 例如,假设我的数据库中有这样的数据: Id | Date 1 | 2011-09-30 0:00:0 2 | 2011-10-02 0:00:00 3 | 2011-10-02 0:00:00 4 | 2011-10-02 0:00:00 5 | 2011-10-04 0:00:00 6 | 2011-10-04 1:30:30 7 | 2011-10-04 0:00:00 8 | 2011-10-06 0:00:00 我们说今天的日期是2011-10-07 我想生成以下内容: Date | Count 2011-10-01 | 0 2011-10-02 | 3 2011-10-03 | 0 2011-10-04 | […]

azure色的服务面料可靠的字典linq查询非常慢

我在服务结构状态服务中有一个可靠的字典。 我有一个简单的linq表达式。 我正在使用Ix-Async包来构建一个asyncenumerable。 using (ITransaction tx = this.StateManager.CreateTransaction()) { var result = (await customers.CreateLinqAsyncEnumerable(tx)) .Where(x => x.Value.NameFirst != null && x.Value.NameFirst.EndsWith(n, StringComparison.InvariantCultureIgnoreCase)) .Select(y => y.Value); return await result.ToList(); } 数据分为2个分区,每个分区约有75,000条记录。 我使用Int64范围作为分区键。 在上面的代码中,“Result.ToList()”大约需要1分钟来执行每个分区。 另一个问题是,实际结果是空的! 在sql server中运行的相同sql返回客户名以“c”结尾的行。 但是,这是重点。 我最关心的是“ReliableDictionary”linq查询的性能。 问候

LINQ到LIN的数据集子集是EF还是这两个是独立的?

LINQ到LIN的数据集子集是EF还是这两个是独立的?

Select子句包含非EF方法调用

我在构建entity frameworkLINQ查询时遇到问题,该查询的select子句包含对非EF对象的方法调用。 下面的代码是用于将数据从一个DBMS转换为另一个DBMS上的不同模式的应用程序的一部分。 在下面的代码中,Role是我与DBMS无关的自定义类,其他类都是由我的数据库模式由Entity Framework生成的: // set up ObjectContext’s for Old and new DB schemas var New = new NewModel.NewEntities(); var Old = new OldModel.OldEntities(); // cache all Role names and IDs in the new-schema roles table into a dictionary var newRoles = New.roles.ToDictionary(row => row.rolename, row => row.roleid); // create a list or Role […]

如何创建表达式树以执行类似于SQL“Like”命令的操作

我正在研究由同事编写的一些表达式树代码,并且正在研究添加其他表达式的可能性。 它目前支持:equals,not-equals,IsNull等。我需要添加一些东西,允许它使用类似于SQL“Like”命令或使用正则表达式的通配符比较。 目前,代码解析XML文件并提取数据,然后使用类似于下面所示的代码的代码处理这些数据。 这是“平等”表达的一个例子。 “callExp”是一个MemberExpression,它基本上保存了我的表(Entities)的字段名称,而GetConstantExpression获取了我正在比较的数据的详细信息。 xRet = Expression.MakeBinary(ExpressionType.Equal, callExp, GetConstantExpression(element.Element(“Value”), callExp.Type)); 我所追求的是一种创建类似于“Like”命令的“Expression”的方法。 这可以使用类似于上面的几行来完成,还是会更复杂? 有什么好的资源可以帮助这个领域吗? ================================================== ================================ 基于反馈的新代码: 我正在看一些例子,并尝试了以下我希望能创建一个表达式。 它给了我下面显示的错误。 我是否朝着正确的方向创建“StartsWith”表达式? _entityExp是对MyClass的ParameterExpression引用。 ParameterExpression p = Expression.Parameter(_entityExp.Type, “entity”); MethodInfo method = typeof(string).GetMethod(“StartsWith”, new[] { typeof(string) }); var containsMethodExp = Expression.Call(p, method, Expression.Constant(“root”), p); 在’System.String’类型上声明的方法’Boolean StartsWith(System.String)’不能使用’MyClass’类型的实例调用

使用null参数调用失败

我有以下代码: public static ContactEventValue GetContactEventValue(ContactEventType contactEventType, string programCode, string brandCode) { AdvocacyEntities ent = AdvocacyEntities.GetReadOnlyInstance(); ContactEventValue value = ent.ContactEventValues.SingleOrDefault( x => x.ContactEventTypeID == contactEventType.ContactEventTypeID && x.ProgramCode == programCode && x.BrandCode == brandCode); } 当我用brandCode和programCode的值调用它时,我从数据库中获得了预期的值。 当我进行调用但显式设置x.ProgramCode和x.BrandCode为null时,我从数据库中获取预期的默认值: ContactEventValue value = ent.ContactEventValues.Single( x => x.ContactEventTypeID == contactEventType.ContactEventTypeID && x.ProgramCode == null && x.BrandCode == null); 但是,当我为programCode和brandCode调用null方法时,我从数据库中返回null! 我尝试根据此问题的答案将==更改为.Equals(): Nullable可选参数 […]

表现:.Join vs .Contains – Linq to Entities

我使用Linq实体查询数据库以获取int列表以供进一步处理。 我有两种方法可以获得如下列表: 首先是: List lstBizIds = new List() { 1, 2, 3, 4, 5 }; List lstProjectIds = context.Projects.Where(x => lstBizIds.Contains(x.businessId)).Select(x => x.projectId).ToList(); 第二是: List lstBizIds = new List() { 1, 2, 3, 4, 5 }; List lstProjectIds = context.Projects.Join(lstBizIds, p => p.businessId, u => u, (p, u) => p.projectId).ToList(); 现在我的问题是上面哪一种方法更好的表现? 如果第一个列表即lstBizIds的大小增加,它是否也会影响性能? 如果性能降低,建议我采用其他实施方式。

错误:表达式树可能不包含动态操作

我使用Asp.Net 4和C#,我使用EF 4。 我有这个查询,我收到一个错误: An expression tree may not contain a dynamic operation dynamic o = e.Item.DataItem; var imagesContent = context.CmsImagesContents.FirstOrDefault(img => img.ContentId == o.ContentId); 使用Lamba表达式转换动态类型似乎是不可能的。 我如何解决问题,并能够o in my Lamba使用我的对象o in my Lamba ? 谢谢 PS: e.Item.DataItem属于CmsContent类型, o.ContentId属于Int类型

Linq-to-Entity查询的动态谓词

以下Linq-to-Entities查询工作正常: var query = repository.Where(r => r.YearProp1.HasValue && r.YearProp1 >= minYear && r.YearProp1 <= maxYear); 我的数据库有十几个列,它们都报告与年份相关的信息( short?数据类型)。 我想为所有这些列重用相同的Linq-to-Entities逻辑。 就像是: Func fx = GetYearPropertyFunction(); var query = repository.Where(r => fx(r).HasValue && fx(r) >= minYear && fx(r) <= maxYear); 这会导致错误: LINQ to Entities无法识别方法’System.Nullable`1 [System.Int16] fx(RepoEntity)’方法,并且此方法无法转换为商店表达式。 我理解为什么我收到错误,但我想知道是否有一个解决方法,不涉及重复代码十几次只是为了更改SQL查询运行的属性。 我会在多个查询中重用该函数,所以我想我的问题的一般版本是: 有没有办法将简单的property-getter lambda函数转换为Linq-to-Entities可以使用的Expression?

将已编译的lambda表达式用于Average时的NotSupportedException

我试图回答这个问题,但失败了: 那么我们来看看原始查询: var result = db.Employees.GroupBy(x => x.Region) .Select(g => new { Region = g.Key, Avg = g.Average(x => x.BaseSalary)}); 工作良好。 现在我们想要动态决定平均值。 我尝试动态创建lambda的lambda: string property = “BaseSalary”; var parameter = Expression.Parameter(typeof(Employee)); var propAccess = Expression.PropertyOrField(parameter, property); var expression = (Expression<Func>)Expression.Lambda(propAccess, parameter); var lambda = expression.Compile(); 并使用它: var result = db.Employees.GroupBy(x => x.Region) .Select(g => new […]