Tag: linq

使用Linq查询记录的Xml文件

以下是我的xml文件。 我必须为每个页面提供字段,并为逗号分隔字符串中的每个类型提供字段。 请帮助您了解如何使用Linq 示例:如果我想为“page1”定义“Type = customFields”,则必须以逗号分隔的ProjectID,EmployeeID,EmployeeName,hasExpiration等输出 ProjectID EmployeeID EmployeeName HasExpiration EndDate ProjectID EmployeeID EmployeeName HasExpiration EndDate IsInUpdateMode TimesheetSpendLimit ProjectID EmployeeID EmployeeName HasExpiration EndDate IsInUpdateMode TimesheetSpendLimit ProjectID EmployeeID EmployeeName HasExpiration EndDate IsInUpdateMode TimesheetSpendLimit

使用LINQ获取序列的奇数/偶数部分

假设我有一个所有Projects的列表,我按Category它们进行分组,如下所示: var projectsByCat = from p in Projects group p by p.Category into g orderby g.Count() descending select new { Category = g.Key, Projects = g }; 现在我想将其显示为网页中的列表,首先我创建左侧div,其次是右侧div。 我按每个Category的Projects数量排序,以显示最顶层Projects的Categories – 因此我想将itemsByCat拆分为两个 – 如果我将所有“奇数编号” Categories放在左侧并且“偶数编号”在右边的类别,我想我会得到一个合理的理智观点。 所以我认为我可以做到这一点来获得项目的奇怪和偶数成员projectsByCat : var oddCategories = projectsByCat.Where((cat, index) => index % 2 != 0); var evenCategories = projectsByCat.Where((cat, index) => index % […]

如何在Linq where子句中指定动态字段名称?

如果您创建一个Filter对象,其中包含Linq的条件,通常在where子句中,如下所示: var myFilterObject = FilterFactory.GetBlank(); myFilterObject.AddCondition(“Salary”, “lessThan”, “40000”); var myResult = myRepository.GetEmployees(myFilterObject); 如何在不使用大案例声明的情况下将Linq字段与字段名称匹配? return from e in db.Employee where e.Salary < 40000 select new IList { Name= e.name, Salary= e.Salary }; 我假设您需要将一个对象发送到指定过滤的存储库,以便您只提取所需的记录。 我假设Linq没有预编译(除非您创建自定义委托和函数),因此您应该能够动态指定要筛选的字段。 如果你可以像某些类型的Expando对象那样做e [“Salary”]这样的话会很好。

“foreach”会导致Linq重复执行吗?

我第一次使用.NET中的Entity Framework工作,并且一直在编写LINQ查询以便从我的模型中获取信息。 我想从一开始就养成良好的习惯,所以我一直在研究编写这些查询的最佳方法,并得到他们的结果。 不幸的是,在浏览Stack Exchange时,我似乎遇到了延迟/立即执行如何与LINQ一起使用的两个相互矛盾的解释: foreach导致查询在循环的每次迭代中执行: 有问题的certificate在LINQ查询上缓慢的foreach() – ToList()极大地提升了性能 – 为什么会这样? ,暗示需要调用“ToList()”以便立即评估查询,因为foreach正在重复评估数据源上的查询,从而显着降低操作速度。 另一个例子是问题通过分组linq结果进行预测非常缓慢,任何提示? ,其中接受的答案还暗示在查询上调用“ToList()”将提高性能。 foreach会导致查询执行一次,并且可以安全地与LINQ一起使用 显示有问题foreach只执行一次查询吗? ,这意味着foreach会导致建立一个枚举,并且每次都不会查询数据源。 继续浏览网站已经出现了很多问题,其中“在foreach循环中重复执行”是性能问题的罪魁祸首,还有很多其他答案表明foreach将从数据源中适当地获取单个查询,这意味着两者都是解释似乎有效。 如果“ToList()”假设不正确(因为美国东部时间2013-06-05 1:51 PM的大部分当前答案似乎都暗示),这种误解来自哪里? 这些解释中是否有一个是准确的,哪个不是,或者是否存在可能导致LINQ查询以不同方式进行评估的不同情况? 编辑:除了下面接受的答案之外,我对程序员提出了以下问题,这非常有助于我对查询执行的理解,特别是在循环期间可能导致多个数据源命中的陷阱,我认为对这个问题感兴趣的人有用: https : //softwareengineering.stackexchange.com/questions/178218/for-vs-foreach-vs-linq

LINQ按时间段聚合和分组

我试图了解如何使用LINQ按时间间隔对数据进行分组; 然后理想地聚合每个组。 找到具有明确日期范围的众多示例,我正在尝试按时段分组,例如5分钟,1小时,1天。 例如,我有一个用Date包装DateTime的类: public class Sample { public DateTime timestamp; public double value; } 这些观察结果包含在List集合中的一系列中: List series; 因此,按小时时段和平均值汇总,我正在尝试做类似的事情: var grouped = from s in series group s by new TimeSpan(1, 0, 0) into g select new { timestamp = g.Key, value = g.Average(s => s.value }; 这基本上是有缺陷的,因为它将TimeSpan本身分组。 我无法理解如何在查询中使用TimeSpan(或表示间隔的任何数据类型)。

LINQ可以在订购集合时使用二进制搜索吗?

我可以以某种方式“指示”LINQ在我尝试搜索的集合被订购时使用二进制搜索。 我正在使用ObservableCollection ,填充有序数据,我正在尝试使用Enumerable.First() 。 在我的谓词中,我按照我的集合排序的字段的值进行过滤。

强类型动态Linq排序

我正在尝试构建一些动态排序Linq IQueryable 的代码。 显而易见的方法是使用字符串作为字段名称对列表进行排序 http://dvanderboom.wordpress.com/2008/12/19/dynamically-composing-linq-orderby-clauses/ 但是我想要一个更改 – 编译时检查字段名称,以及使用重构/查找所有引用来支持以后的维护的能力。 这意味着我想将字段定义为f => f.Name,而不是字符串。 对于我的特定用途,我想封装一些代码,这些代码将根据用户输入决定应该使用哪个命名的“OrderBy”表达式列表,而不必每次都编写不同的代码。 这是我写的内容的要点: var list = from m Movies select m; // Get our list var sorter = list.GetSorter(…); // Pass in some global user settings object sorter.AddSort(“NAME”, m=>m.Name); sorter.AddSort(“YEAR”, m=>m.Year).ThenBy(m=>m.Year); list = sorter.GetSortedList(); … public class Sorter … public static Sorter GetSorter(this IQueryable source, […]

解析字符串C#LINQ表达式

我试图在这里进行一些非常动态的查询 – 最好不要在运行时调用编译器。 我有一个包含LINQ表达式的字符串,例如 var s = “from a in queryable where a.Type == 1 select a”; 如何从中获得由此产生的IQueryable或Expressions? 我已经看到LINQPad和RavenDb都这样做,所以我确信有一种方法,我还没有找到它。

在LINQ查询中调用SQL用户定义的函数

我很难让这个工作。 我正在尝试使用IQueryable上的以下Filter助手进行半径搜索。 在RadiusSearch应用之前,还有一组其他filter可以应用。 顺序不应该真正重要,因为目标是将查询推迟到ToList()操作。 public static IQueryable RadiusSearch(this IQueryable communities) { var centerLatitude = 30.421278; var centerLongitude = -97.426261; var radius = 25; return communities.Select(c => new ApiSearchCommunity() { CommunityId = c.CommunityId, City = c.City, //Distance = c.GetArcDistance(centerLatitude, centerLongitude, c.Latitude, c.Longitude, radius) }); } 我可以以某种方式编写一个像GetArcDistance这样的帮助程序,然后在SQL上调用UDF吗? 我想要生成的查询如下 SELECT comms.community_id, comms.city, comms.distance FROM ( SELECT c.community_id, c.city, […]

比较:LINQ vs LAMBDA表达式

我需要讨论LINQ和Lambda Expression的性能。 哪一个更好?