Tag: group by

使用多个属性构建动态GroupBy选择器表达式树

我将为GroupBy构建一个动态表达式树。 我想要实现的就是这样。 var NestedGrouped = listOfPerson.GroupByMany(x => x.Name,x=>x.Age).ToList(); 我的人员类似: – class Person { public string Name{ get; set; } public int Age{ get; set; } public float Salary{ get; set; } } public class GroupResult { public object Key { get; set; } public int Count { get; set; } public IEnumerable Items { get; […]

使用linq对包含子字符串的表进行分组

我的数据表(DeviceInfo): ID | OS | 设备 ———————————————– 1 | Android 2.2 | 三星 2 | Linux / Android 4.2 | LG 3 | Linux / Android 4.4.2 | HTC 4 | Android 3.2 | 三星 5 | Android 3.0 | 摩托罗拉 6 | iOS 7.1.2 | iPad的 7 | iOS 8.0 | iPhone 6 8 […]

Linq:在查询语法中使用StringComparer和GroupBy / Distinct

我有这个(XLinq)查询,并想知道如何将其转换为查询语法: var grouped = doc.Descendants() .GroupBy(t => t.Element(ns + “GroupingAttr”).Value, StringComparer.OrdinalIgnoreCase); 这是没有StringComparer的查询语法: var grouped = from t in doc.Descendants() group t by t.Element(ns + “GroupingAttr”).Value into group select group 我的groupby比这更复杂,所以我更喜欢使用组的键而不是引入新属性。 这是我尝试过的,但不起作用,因为let“键”在select的上下文中不可用(我使用了我更复杂的键定义来说明我不想在选择): var grouped = from t in doc.Descendants() let key = ((t.Name != ns + “SomeElementName”) ? t.Element(ns + “SomeAttribute”) : t.Element(ns + “SomeOtherAttribute”)).ElementValueOrDefault(“Empty group”) […]

Nhibernate Group By和Alias To Bean

我一直在努力将旧的查询翻译成Nhibernate。 我们正在将旧项目从Nhibernate 2升级到最新版本。 我使用QueryOver语法,因为Linq不是一个选项,因为查询的复杂性(同事的建议)。 我想查询DB(Oracle)以获得一些必须分组的结果。 结果我需要一个我的DTO的分组集合。 我也注意到nhibernate在转换为具有复杂属性的DTO时遇到了麻烦(嵌套DTO)为了解决这个问题,我找到了这个主题。 这很好用,但我不是魔术弦的粉丝…… 我将添加一些代码片段,了解我的怪物查询在这一刻的表现。 问题是我似乎无法弄清楚如何在不破坏其他所有内容的情况下添加组。 所以我想在一个属性上分组但在我的结果中仍然有DTO。 就像是: ILookup<int,IEnumerable> 欢迎任何帮助。 抱歉变量和类是荷兰语-_- SYNUITGAANDEBRIEF uitgaandebrief = null; SYNAANVRAAG joinedAanvraag = null; SYNDOSSIER joinedDossier = null; SYNVERBRUIKSADRES joinedVerbruiksAdres = null; SYNEAN joinedEan = null; SYNCTENERGIETYPE joinedEnergieType = null; SYNBRIEFBESTEMMELINGEN joinedBriefBestemmeling = null; SYNCTBRIEFTYPE joinedBriefType = null; SYNCTBRIEFSTATUS joinedBriefStatus = null; SYNCONTACTPERSOON joinedContactpersoon = null; […]

在LINQ查询中分组

我有一个DataTable,我想在其上执行GroupBy查询。 year url type id ============================= someurl image 0 2003 date 0 someurl image 1 2009 date 1 我已经设法对我的ID进行分组,但我无法选择“年”和“Url”列。 这是我的查询: var query = from row in table.AsEnumerable() let uri = row[“uri”] group row by row.Field(“id”) into grp orderby grp.Key select new { ID = grp.Key, }; 如何选择列年份和url? 提前致谢。

LinQ和DataTable Group在C#中的问题

我有一个DataTable并存储4列(StockCardCode,Explain,Quantity,BranchCode),并使用LinQ对它们进行分组。 代码是我使用Group By的关键。 当我编写查询时,我只能在select语句中使用2列,如何在此查询中显示所有列? 这个查询返回2列。 例如,我无法在查询中使用x.Field(“Explain”)。 var query = from s in incoming.AsEnumerable() group s by s.Field(“Stock Card Code”) into grp orderby grp.Key select new { StockCardCode = grp.Key, Quantity = grp.Sum(r => r.Field(“Quantity”)) }; 传入:DataTable

LINQ Group By投射到非匿名类型?

我有以下LINQ示例: var colorDistribution = from product in ctx.Products group product by product.Color into productColors select new { Color = productColors.Key, Count = productColors.Count() }; 所有这些都有效并且非常有意义。 我想要实现的是将其分组为强类型而不是匿名类型。 例如,我有一个ProductColour类,我想组成一个List 这可能吗? 谢谢

查找重复并将记录合并到单个数据表c#中

我能够从DataTable行中找到重复项。 如下: var groups = table.AsEnumerable() .GroupBy(r => new { c1 = r.Field(“Version”), }); var tblDuplicates = groups .Where(grp => grp.Count() > 1) .SelectMany(grp => grp) .CopyToDataTable(); 现在,我想将所有重复记录合并为单个,并将其与值列值相加。 非常像以下内容: 具有重复项的DataTable: Version Value 1 2 2 2 2 1 1 3 2 1 3 2 没有重复的DataTable和值总和: Version Value 1 5 2 4 3 2 我知道这个链接是在reflection的帮助下完成的。 http://forums.asp.net/t/1570562.aspx/1 […]

entity framework跳过按组分组

我目前通过一个表(“Table1”)“分页”,其中包含以下字段{Policy,Name,Amount,Date},并且“Table1”中可以有多个记录,如下所示: return context.Table1s.Orderby(i => i.Policy) .Skip(endingRecord).Take(page) .ToList(); 如果我想首先按策略分组然后跳过并采用不同的策略(基本上试图确保“页面”包含页面中包含的策略的所有记录),我将如何执行此操作? 我正在使用C#,entity framework,如果可能的话,更喜欢“lambda”语法。

组内的LINQ到对象索引+用于不同的分组(也称为ROW_NUMBER与PARTITION BY等效)

经过大量的Google搜索和代码实验,我对一个复杂的C#LINQ-to-objects问题感到难过,在SQL中使用一对ROW_NUMBER()… PARTITION BY函数和一个或两个子查询很容易解决这个问题。 用语言来说,这就是我在代码中尝试做的事情 – 基本要求是从列表中删除重复的文档: 首先,按(Document.Title,Document.SourceId)对列表进行分组,假设(简化)类定义如下: class Document { 字符串标题; int SourceId; //来源优先(ID = 1比ID = 2好) } 在该组中,为每个文档分配一个索引(例如,索引0 = =第一个文档,此标题来自此来源,索引1 =第二个文档,此标题来自此来源,等等)。 我喜欢SQL中相当于ROW_NUMBER()的东西! 现在分组(Document.Title,Index),其中Index在步骤#2中计算。 对于每个组,只返回一个文档:Document.SourceId最低的文档。 步骤#1很简单(例如codepronet.blogspot.com/2009/01/group-by-in-linq.html),但我对步骤#2和#3感到困惑。 我似乎无法构建一个红色无波形的C#LINQ查询来解决所有这三个步骤。 Anders Heilsberg关于这个post的post是我认为如果我能正确理解语法,那么上面的步骤#2和#3的答案。 我倾向于避免使用外部局部变量来执行索引计算,正如slodge.blogspot.com/2009/01/adding-row-number-using-linq-to-objects.html所建议的那样,因为该解决方案中断了如果外部变量被修改。 最佳地,可以首先完成逐个标题步骤,因此“内部”分组(首先由Source计算索引,然后通过索引来过滤掉重复项)可以对每个“按标题”中的少量对象进行操作group,因为每个by-title组中的文档数量通常都在100以下。我真的不想要N 2解决方案! 我当然可以用嵌套的foreach循环解决这个问题,但看起来像LINQ这个问题应该很简单。 有任何想法吗?