Tag: linq

如何使用LINQ合并两个列表?

如何使用LINQ合并两个列表,如下所示: class Person { public int ID { get; set;} public string Name { get; set;} public Person Merge( Person p) { return new Person { ID = this.ID, Name = this.Name + ” ” + p.Name }; } } 我有两个人名单: list1: 1, A 2, B list2: 2, C 3, D 我希望得到如下结果 result: 1, A […]

如何在执行之前将Entity Framework包装起来拦截LINQ表达式?

我想在执行之前重写LINQ表达式的某些部分。 而且我在将重写器注入正确的位置时遇到了问题(实际上完全没有)。 查看entity framework源(在reflection器中)它最终归结为IQueryProvider.Execute ,它在EF中通过ObjectContext耦合到表达式,提供internal IQueryProvider Provider { get; } 属性。 所以我创建了一个包装类(实现IQueryProvider )来在调用Execute时执行Expression重写,然后将其传递给原始的Provider。 问题是, Provider背后的字段是private ObjectQueryProvider _queryProvider; 。 这个ObjectQueryProvider是一个内部密封类 ,这意味着不可能创建一个提供添加重写的子类。 因此,由于非常紧密耦合的ObjectContext,这种方法让我陷入了死胡同。 如何解决这个问题呢? 我看错了方向吗? 有没有办法让自己注入这个ObjectQueryProvider ? 更新 :虽然提供的解决方案在您使用存储库模式“包装”ObjectContext时都能正常工作,但是允许从ObjectContext直接使用生成的子类的解决方案将更可取。 因此保持与Dynamic Data脚手架兼容。

linq group by contiguous blocks

假设我有以下数据: 时间状态 10:00开 11:00关闭 12:00关闭 13:00关闭 14:00关闭 15:00开 16:00开 我如何使用Linq将其分组 [开,[10:00]],[关闭,[11:00,12:00,13:00,14:00]],[开启,[15:00,16:00]]

在LINQ中表达递归

我正在为一个分层数据源编写一个LINQ提供程序。 我发现通过编写显示我想如何使用它的示例来设计我的API最简单,然后编写代码以支持这些用例。 我遇到麻烦的一件事是在LINQ语句中表达“深度查询”或递归的简单/可重用/优雅方式。 换句话说,区分以下内容的最佳方法是: from item in immediate-descendants-of-current-node where … select item 与: from item in all-descendants-of-current-node where … select item ( 编辑:请注意上面这些例子都不一定反映我想要的查询结构。我感兴趣的是表达递归/深度的任何好方法 ) 请注意我不是问如何实现这样的提供程序,或者如何以允许递归的方式编写我的IQueryable或IEnumerable。 我是从一个人编写LINQ查询并利用我的提供者的角度问的 – 他们表达是否想要递归的直观方式是什么? 数据结构类似于典型的文件系统:文件夹可以包含子文件夹的集合,文件夹也可以包含项集合。 所以myFolder.Folders表示myFolder的直接子节点的所有文件夹,myFolder.Items包含myFolder中的所有项目。 这是网站层次结构的基本示例,非常类似于包含文件夹和页面的文件系统: (F)Products (F)Light Trucks (F)Z150 (I)Pictures (I)Specs (I)Reviews (F)Z250 (I)Pictures (I)Specs (I)Reviews (F)Z350 (I)Pictures (I)Specs (I)Reviews (I)Splash Page (F)Heavy Trucks (F)Consumer Vehicles (I)Overview 如果我写: from […]

具有“箭头”的C#代码是什么意思,它是如何调用的?

我试图在我的C#客户端程序中启用SSL,并在此答案中找到以下代码: System.Net.ServicePointManager.ServerCertificateValidationCallback += (se, cert, chain, sslerror) => { return true; }; 我将代码添加到我的程序中它解决了问题,但我完全不知道它是如何工作的。 左侧部分System.Net.ServicePointManager.ServerCertificateValidationCallback是一些回调, +=修改该回调。 但剩下的构造意味着什么呢? 我花了20分钟搜索至少找到它是如何正确调用的,在哪里我可以找到更多关于如何阅读的信息,但都是徒劳的。 我想它以某种方式与LINQ相关并搜索“LINQ箭头”,但没有找到任何合理的东西。 怎么会(blah,blah,blah)=>{return true;}构造被调用,哪里可以找到关于这种结构的更多信息?

如何设置值属性选择器Expression <Func >

我需要使用模式工厂的想法将我的Person类实体中的实体属性Address与我的FactoryEntities类中的表达式linq相关联,看看这就是我拥有的和我想做的事情: Address address = new Address(); address.Country = “Chile”; address.City = “Santiago”; address.ZipCode = “43532”; //Factory instance creation object //This is idea Person person = new FactoryEntity().AssociateWithEntity(p=>p.Address, address); public class Person: Entity { public string Name{ get; set; } public string LastName{ get; set; } public Address Address{ get; set; } } public class Address: […]

Interleaved与LINQ合并?

我正在尝试使用LINQ。 假设我有两个相同长度的集合: var first = new string[] { “1”, “2”, “3” }; var second = new string[] { “a”, “b”, “c” }; 我想将这两个集合合并为一个,但是以交错的方式。 因此,结果序列应为: “1”, “a”, “2”, “b”, “3”, “c” 到目前为止我提出的是Zip ,匿名类型和SelectMany : var result = first.Zip( second, ( f, s ) => new { F = f, S = s } ) .SelectMany( fs […]

如何使用Dynamic Linq进行左外连接?

我试图在这里模仿左外连接,但使用动态linq扩展方法。 是)我有的: public static IQueryable SelectMany(this IQueryable source, string selector, string resultsSelector, params object[] values) { if (source == null) throw new ArgumentNullException(“source”); if (selector == null) throw new ArgumentNullException(“selector”); // Parse the lambda LambdaExpression lambda = DynamicExpression.ParseLambda( source.ElementType, null, selector, values); // Fix lambda by recreating to be of correct Func type in case […]

C#是否有LINQ to HTML或其他一些优秀的.Net HTML操作API?

我有一个C#WPF应用程序需要使用作为HTML表格在网页上公开的数据。 从这个url获得灵感后,我尝试使用Linq to Xml来解析Html文档,但这只适用于HTML文档forms非常好(并且其中没有任何注释或HTML实体)。 我已经设法使用这种技术获得了一个有效的解决方案,但它远非理想。 我正在寻找一个用于解析HTML的解决方案。 我以前曾经破解过“解决方案”,但它们很脆弱。 我正在寻找一种解析/操作文档的强大方法。 理想情况下,我喜欢能让任务变得像Javascript / JQuery一样简单的东西。 有谁知道用于解析/操作HTML的好的.Net库或实用程序?

如何使用Linq对每N行进行分组

我无法找到一种方法来完成这项工作并希望有人有一个想法。 一个简化的例子是有一个整数列表1-100,我想分组每3行所以结果将是1,2,3在第一组然后4,5,6在下一组等我知道如何得到每个第n条记录,但我需要的是所有记录,所以我可以使用first,last,sum,max等聚合它们。 谢谢!