Tag: linq

如何处理linq中引发的exception

gyus! 假设我有这么简单的LINQ表达式 IEnumerable res = from rqResult in MatchesList select new StopListMatchViewModel ( ) { MatchDate = DateTime.ParseExact(rqResult.Row[“MatchDate”].ToString(), “dd.MM.yyyy HH:m:ss”, fmtInfo), Remark = rqResult.Row[“Remark”].ToString() } 如果无法根据指定的格式掩码解析字符串 – 我得到FormatException。 在调试器中,我可以在变量“res”的结果视图中了解它。 实时我得到空集合。 在执行LINQ期间可能会发生许多不同exception的例子。 我怎么能抓住并处理它们? 尝试catch块在这里不起作用,因为exception在我看来不会被提出。

如何使用LINQ对1表返回父级和子级

一直在寻找解决方案,但到目前为止还没找到。 我很确定它可以通过一个linq调用但是无法解决它。 我有以下数据结构 Id ParentId Name ValidFlag 1 NULL parent 1 1 2 NULL parent 2 1 3 NULL parent 3 0 4 1 child 1 1 5 1 child 2 1 6 2 child 3 1 7 2 child 4 1 8 3 child 5 1 9 3 child 6 1 现在我要做的是返回所有有效的父母和他们的孩子,所以这种情况下我将返回除Id = 3(父母3)之外的所有内容。 […]

“Where”方法不能遵循“选择”方法或不支持

我为什么得到: “Where”方法不能遵循“选择”方法或不支持。 尝试根据支持的方法编写查询,或在调用不支持的方法之前调用’AsEnumerable’或’ToList’方法。 …使用WHERE子句时,比如调用时: XrmServiceContext.CreateQuery().Project().To().Where(p => p.FirstName == “John”).First(); ? 这有效: XrmServiceContext.CreateQuery().Project().To().First(); 这也有效: XrmServiceContext.CreateQuery().Where(p => p.FirstName == “John”).First(); 我正在使用AutoMapper QueryableExtension 。 附加信息: 我不想在Where子句之前调用ToList()。 我知道它会这样运作。 CreateQuery()返回IQueryable 。

如何检查IEnumerable 返回null或有任何行?

我有一个类似下面的linq查询。 IEnumerable query= (from item in IItemsTable.AsEnumerable() where somecondition select item); 如何检查查询是否包含任何行或为空?

创建可重用的Linq查询

我有一个选择查询,反复使用不同的filter: var query = from row in context.Table select row; 如何将其保存到静态类变量中,以便可以在不同的方法中重用它? 喜欢: var results1 = query.Where(condition1); … var results2 = query.Where(condition2);

不要在成员签名中嵌套generics类型

我已经获得了一个扩展类,它实现了以下具有违反CA1006:DoNotNestGenericTypesInMemberSignatures规则的签名的成员。 警告所涉及的代码包含在下面。 我应该如何重构代码以解决CA1006警告? 请记住,我对表达式树不是很熟悉,尽管我对匿名方法,委托和lambda非常熟悉。 任何帮助将不胜感激。 public static DataServiceQuery Expand(this DataServiceQuery source, Expression<Func> propertySelector) { string includeString = BuildString(propertySelector); return source.Expand(includeString); } private static string BuildString(Expression propertySelector) { switch (propertySelector.NodeType) { case ExpressionType.Lambda: LambdaExpression lambdaExpression = (LambdaExpression)propertySelector; return BuildString(lambdaExpression.Body); case ExpressionType.Quote: UnaryExpression unaryExpression = (UnaryExpression)propertySelector; return BuildString(unaryExpression.Operand); case ExpressionType.MemberAccess: MemberExpression memberExpression = (MemberExpression)propertySelector; MemberInfo propertyInfo = […]

使用Linq在两个日期之间重叠记录

在我的应用程序中,用户可以委派另一个用户批准订单。 我需要validation的是,没有循环引用,因此如果User A在一定时间内委派了User B ,则User B不能在该时间段内的任何时间委托User A ,即存在重叠( dd/mm/yyyy日期) dd/mm/yyyy ): Delegator Delegated To DateFrom DateTo User A User B 01/11/2012 08/11/2012 User A User B 16/12/2012 24/12/2012 这是我必须检查重叠的代码: var overlaps = .Session.QueryOver() .Where(x => x.DateFrom > DateTime.Now && delegateOrderApproval.DelegatedUser.UserId == x.DelegatorUser.UserId) .And(x => x.DateFrom >= delegateOrderApproval.DateFrom && delegateOrderApproval.DateTo = delegateOrderApproval.DateFrom && x.DateTo <= delegateOrderApproval.DateTo) […]

如何减少多个嵌套的foreach块

我有以下情况: var Ids = object1.GetIds(); // returns IEnumerable foreach (var id in Ids) { foreach (var relatedObject in object1.GetRelatedObjects(id)) { // Do Something with related object } } 在这种情况下,我想摆脱第一个foreach并将这个逻辑减少为单个foreach。 我怎么能做到这一点? LINQ表达式是否可以使用类似的方法?

将变量注入Mono.CSharp.Evaluator(运行时从字符串编译LINQ查询)

我正在使用Mono.CSharp库来发出代码。 关于SO的另一个问题(http://stackoverflow.com/questions/3407318/mono-compiler-as-a-service-mcs)我设法在Microsoft CLR上正确评估Mono.CSharp。 为了增加我的应用程序的灵活性,我希望能够在运行时自定义查询 – 允许用户提供LINQ查询作为一个字符串,在执行时会被解析并命中数据库。 鉴于这个基本的代码片段: IQueryable contacts = GetContacts(); string query = “from contact in contacts where contact.Name == \”name\” select contact”; var queryableResult = Mono.CSharp.Evaluator.Evaluate(query); 如何将contacts变量“注入”Mono.CSharp.Evaluator以作为查询的一部分进行评估? 我是以正确的方式来做这件事的吗? 最后,我需要结果表达式或’query’字符串中的IQueryable。

String.StartsWith不使用波形符(“〜”)字符LINQ to SQL?

出于某种原因,我使用String.StartsWith()调用IEnumerable.Where()似乎给出了不同的结果,具体取决于它是在LINQ-to-SQL还是标准LINQ(-to-objects)中使用。 如果我在ToList()上添加一个对同一个调用的调用,我会得到不同的结果: var withToList = MyDataContext.MyEntities.ToList().Where(entity => entity.Name.StartsWith(“~Test: My Test String”)); // withToList.Count() returns 5, which is what I expect. var direct = MyDataContext.MyEntities.Where(entity => entity.Name.StartsWith(“~Test: My Test String”)); // direct.Count() returns 0 我的理解是,与LINQ中的其他一些运算符/方法不同,Where()方法不要求谓词是SQL可翻译的; 它在客户端执行,因此可以是任意.NET代码。 (我肯定会在其中抛出其他非SQL代码并获得成功结果)。 我甚至得到了一个链接,其中安德斯自己暗示这应该有效。 有没有搞错? 编辑:我发现了问题; 它与我的搜索字符串中存在波浪号有关。 我更新了标题以反映这一点。