如何在LINQ中找到群组的最大值?
我正在尝试解决LINQ中的"小组最大"问题.首先,我使用一个具有以下结构的实体框架建模的数据库: Customer: --------- CustomerID : Int32 Name : String Order: ------- OrderID : Int32 CustomerID : Int32 Total : Decimal 这使我从客户到她的订单和向所有者订单导航. 我正在尝试创建一个LINQ查询,该查询使我可以在数据库中找到前10个客户订单.简单的情况很容易提出: var q = ( from order in _data.Orders // ObjectQuery orderby order.Amount descending select order ).Take(10); 但是,我只想在此列表中显示独特的客户.我仍然是Linq的新手,但这就是我想到的: var q = ( from order i
26 2024-04-26
编程技术问答社区
如何对字符串字符进行左右洗牌,直到int.MaxValue?
我的任务是做一个有组织的洗牌,从源中,所有奇数都将左转,甚至数字都会向右. 我做了这么多这样的事情,这对普通场景很有好处: public static string ShuffleChars(string source, int count) { if (string.IsNullOrWhiteSpace(source) || source.Length == 0) { throw new ArgumentException(null); } if (count index % 2 == 0)) +
10 2024-04-25
编程技术问答社区
c# linq MethodCallExpression for Max(DataRow) used for .GroupedBy().Select()
这个问题在此指的是我以前的问题在这里 @xanatos建议的sum()表达式非常完美. 我还尝试了double类型字段的max()表达式,并且没有问题. 作为下一步,我决定添加DateTime字段并为其计算Max(). 我修改了组类,如下: private class GroupSum : GroupKey { public Double AggN0 { get; set; } public DateTime AggD0 { get; set; } } 并编程了功能: private static Func, DateTime> GetFuncMaxDateTime() { MethodInfo methInfo = typeof(DataRowExtensions).GetMethod("Field", new Type[] { typeof(DataRow), typeof(stri
14 2024-04-24
编程技术问答社区
System.Windows.Forms.TrackBar的内存使用有很大的最大值
我有一个包含system.windows.forms.trackbar的控件.我将其最大值设置为〜200,000,000.当我这样做时,控件需要800MB的内存.将最大值减少到2,000,000使用了更合理数量的内存. //trackBar.Maximum = 210554060; // uses ~800MB of memory trackBar.Maximum = 1000000; // uses a small amount of memory 这是Windows控件中的错误吗?还是我要跟踪栏做一些不合理的事情? 更新: 我创建了一个新的Windows Form Project,除了表单上的跟踪栏外,什么都没有.我将最大值设置为200,000,000.我设置了tick频和更改,以使得没有数百万滴答和更改步骤. 执行此操作时,应用程序使用超过800MB的内存.我正在使用.NET框架4. . 更新 我发现了这个问题的解释: http://w
6 2024-04-22
编程技术问答社区
获得一个列表中的最大值的列表
我有一个List>,我需要找到一个列表mylist,例如myList [0]是列表中所有第一个元素的最大值. 例如,要清楚: 第一个列表包含(3,5,1),第二个列表包含(5,1,8),第三个包含(3,3,3),fourt含有(2,0,4). 我需要找到(5、5、8)的列表. 我不需要列表(5,8,3,4). 当然,我知道如何用嵌套的循环做. 我想知道是否有linq的方式,相信我我不知道从哪里开始. 解决方案 尝试这个: // Here I declare your initial list. List> list = new List>() { new List(){3,5,1}, new List(){5,1,8}, new List(){3,3,3}, new List(){2
8 2024-04-21
编程技术问答社区
使用C#在数据表格中查找最小和最大值
可能的重复: 如何选择最小和最大列中的列值? 我正在搜索可以从数据表中的列中找到最小和最大(或第一个和最后一个值)的代码. 我已经用四个列值存储了数据表,我想从第三列(索引2)找到最小值和最大值,并将其显示给用户. 我尝试了多种方法,但所有方法都引起了例外... 最后我尝试了此代码,但即使这也不起作用. count = Convert.ToInt32(dt.Rows.Count); start = Convert.ToInt32(dt.Rows[0][2].ToString()); end = Convert.ToInt32(dt.Rows[count-1][2].ToString()); 谢谢 文斯 解决方案 您可以随时使用.Select DataTable上的方法来获取这些行: var maxRow = dt.Select("ID = MAX(ID)"); 这将返回a DataRow[]数组 - 但通常应该只包含一个行(除非您
14 2024-04-20
编程技术问答社区
查找列表中两个(或多个)属性的最大值
这个问题以一种或另一种方式被提出,但不是这样.我刚刚讨论了一个非常基本的问题,我正在寻找一个指定的解决方案:-) 我得到了具有两个整数属性的对象列表.现在,我想找到列表中所有对象的两个属性的最大值. 我提出了三个解决方案: 第一种方法: int max = Math.Max(list.Max(elem => elem.Nr), list.Max(elem => elem.OtherNr)); 第二种方法: public int Max(List list) { int maxNr = 0; foreach (var elem in list) { if (elem.Nr > maxNr) maxNr = elem.Nr; if (elem.OtherNr > maxNr) maxNr = elem.OtherNr; } return maxNr; } 第三种方法是通过属性进行分类,然
8 2024-04-20
编程技术问答社区
LINQ GROUP BY和MAX()
我正在尝试找出如何在LINQ中写下SQL句子,但是我目前无法找到一种方法,这是SQL命令: SELECT cs.Site_Name, MAX(ed.EffectiveDate_Date) FROM [WAPMaster].[Factsheets].[EffectiveDate] ed, [WAPMaster].[Configuration].[Site] cs WHERE cs.Site_Id = ed.EffectiveDate_SiteId GROUP BY cs.Site_Name 有人可以帮助我使用linq语法吗? **我到目前为止尝试此尝试(谢谢Levanlevi) var test = (from e in this._wapDatabase.EffectiveDates join c in this._wapDatabase.Sites on c.Site_Id equals e.EffectiveDa
16 2024-04-16
编程技术问答社区
如何用linq查找具有最大值的项目?
请看下表: Item Value A 10 b 50 c 90 我想找到maximum value的项目.我可以通过使用group by或orderding来理解它,但是我以某种方式感觉应该有一种更直接的方法.我是吗? 解决方案 与EF或Linq到SQL: var item = db.Items.OrderByDescending(i => i.Value).FirstOrDefault(); 与linq一起到对象,我建议使用 Morelinq Extension MaxBy(从Nuget获得Morelinq): var item = items.MaxBy(i => i.Value);
16 2024-04-14
编程技术问答社区
如何在可数据化的每一列中获得最大的字符串长度
我有一个数据表对象.每个列都是字符串的类型. 使用linq,如何获得每列的最大字符串长度? 解决方案 整表的最大字符串长度: int? maxStringLength = dataTable.AsEnumerable() .SelectMany(row => row.ItemArray.OfType()) .Max(str => str?.Length); 如果您想要每个列的最大字符串长度,则可以这样做: List maximumLengthForColumns = Enumerable.Range(0, dataTable.Columns.Count) .Select(col => dataTable.AsEnumerable() .Select(row => row[col]).OfType() .Max(val => val
14 2024-04-13
编程技术问答社区
LINQ中的最大日期记录
我在MS SQL Server中使用此表名为示例: ID Date Description 1 2012/01/02 5:12:43 Desc1 2 2012/01/02 5:12:48 Desc2 3 2012/01/03 5:12:41 Desc3 4 2012/01/03 5:12:43 Desc4 现在我想编写Linq查询,结果将是: 4 2012/01/03 5:12:43 Desc4 我写了这篇文章,但它不起作用: List q = (from n in Sample.Max(T=>T.Date)).ToList(); 解决方案 从 .net 6 MaxBy Linq方法可用. var result = items.MaxBy(i => i.Date); .net 6: 之前 o(n): var result = items.Aggr
24 2024-04-12
编程技术问答社区
如何使用Entity Framework获得一个列的最大值?
要获取包含整数的列的最大值,我可以使用以下T-SQL COMAND SELECT MAX(expression ) FROM tables WHERE predicates; 可以通过实体框架获得相同的结果. 假设我有以下模型 public class Person { public int PersonID { get; set; } public int Name { get; set; } public int Age { get; set; } } 我如何获得最大的年龄? int maxAge = context.Persons.? 解决方案 尝试此int maxAge = context.Persons.Max(p => p.Age); 并确保您的文件顶部有using System.Linq; 其他解决方案 如果列表为空,我会得到异常.该解决方案将考虑此问题: int maxAge = context.Per
16 2024-04-12
编程技术问答社区
有没有一种方法可以在C#中找到3个数字的最大值?
该方法应像Math.Max()一样工作,但要服用3个或更多int参数. 解决方案 好吧,您只能称其为两次: int max3 = Math.Max(x, Math.Max(y, z)); 如果您发现自己经常这样做,您总是可以写自己的助手方法...我很高兴在我的代码库中看到这一点,但不定期. (请注意,这可能比安德鲁基于LINQ的答案更有效 - 但是显然,您拥有的元素越吸引力更多.) 编辑:一种"两全其美"的方法可能是使用一种自定义的方法: public static class MoreMath { // This method only exists for consistency, so you can *always* call // MoreMath.Max instead of alternating between MoreMath.Max and Math.Max // depending on your argume
12 2024-04-12
编程技术问答社区
返回列表中最大的重复项目
List prod = new List(); prod.Add("dfg"); prod.Add("dfg"); prod.Add("ojj"); prod.Add("dfg"); prod.Add("e"); 在上面的代码列表中,项目" DFG"重复三次(最大计数)... 我希望" DFG"作为输出,因为此项目是重复的最大时间. 任何人都可以在这方面提供帮助吗 解决方案 您可以使用linq: string maxRepeated = prod.GroupBy(s => s) .OrderByDescending(s => s.Count()) .First().Key; 其他解决方案 不是绝对最有效的,但它有效: var maxR
16 2024-04-11
编程技术问答社区
在C#中获得一个字典的最高值的关键的好方法
我试图在Dictionary results中获取最大值的钥匙. 这是我到目前为止所拥有的: double max = results.Max(kvp => kvp.Value); return results.Where(kvp => kvp.Value == max).Select(kvp => kvp.Key).First(); 但是,由于这似乎有点低效,所以我想知道是否有更好的方法. 解决方案 编辑: .net 6引入了一种新方法 var max = results.MaxBy(kvp => kvp.Value).Key; 如果可以的话,您可能应该使用它. 我认为这是使用标准linq的最可读性的O(n)答案. var max = results.Aggregate((l, r) => l.Value > r.Value ? l : r).Key; 编辑:咖啡迪克特的解释 Aggregate是常见
10 2024-04-11
编程技术问答社区
如何对一个集合中所有对象的一个属性执行.Max()并返回具有最大值的对象?
我有一个具有两个int属性的对象列表.该列表是另一个LINQ查询的输出.对象: public class DimensionPair { public int Height { get; set; } public int Width { get; set; } } 我想在列表中找到并返回具有最大Height属性值的对象. 我可以设法获得Height值的最高值,而不是对象本身. 我可以用Linq做到这一点吗?如何? 解决方案 我们有一个扩展方法这是 morelinq .您可以查看那里的实现,但基本上是通过数据迭代的情况,记住我们到目前为止已经看到的最大元素以及投影下产生的最大值. 在您的情况下,您会做类似的事情: var item = items.MaxBy(x => x.Height); 这比Mehrdad的第二个解决方案(基本上与MaxBy)更好(IMO)(IMO). 是o(n)与以前的接受答案在每个迭代中找到最大值
12 2024-04-10
编程技术问答社区
我怎样才能获得这些变量中哪些变量的值最高?
我必须知道这些变量中的哪个具有最高值: A=1 B=500 C=100 D=700 E=5 F=1000 哪种是最简单的方法? 解决方案 您可以选择其中一个作为具有最高值的潜在变量.然后迭代所有变量.在每次迭代中,查看该变量的值是否高于您的候选人.如果确实如此,请更换您的候选人.当您通过所有变量迭代时,潜在的候选变量是具有最高值的实际变量. 其他解决方案 #include #include #define max(x) max_value(x, #x) typedef struct _var { const char *name; int value; } Var; Var max_value(int value, const char *name){ static Var max = {NULL, INT_MIN}; Var temp = { max.name, max.valu
16 2024-04-10
编程技术问答社区
定制书面比较功能的问题
有人可以快速查看我的代码,因为我只是找不到为什么我没有得到想要的结果.这里的目标是从我给我的功能的数组中找到最大和最小的数字,如果最大和min之间的差异大于0.001,那么我应该得到一个printf语句,如果不是,则另一个printf语句. 真的很感谢您的帮助. #define _CRT_SECURE_NO_WARINGS #include int alle_gleich(double*, int); int pruefe_sort(double*, int); double max_delta(double*, int); // Vorschlag für Felddeklarationen und Initialisierungen : int alle_gleich(double* array[], int anz) { int i = 0; if (anz
16 2024-04-09
编程技术问答社区
获得所输入的五个数字的最小、最大和平均数
我正在尝试处理C中获得5个输入数字的程序,然后将它们存储在数组中.获得5个数字后,我必须获得最小值,max和minimun的平均值和最大数字输入而不是所有五个.,所以这是我制作的代码.当我获得最大数字时,它似乎工作正常.但是,当它到达最小值时,它仍然与最大值相同,所以我会得到不同的平均值. #include #include int main() { int num[5]; int counter, min, max=0; float average, total; min=num; for(counter=1; countermax) { max = num[5]; } if (num[5]
32 2024-04-09
编程技术问答社区
同时查找最小值和最大值:算法应该更快,但并非如此
我正在尝试实现算法,以在文件中的一组longs中找到最小值和最大值.我的测试文件包含10亿个长期. 该算法按预期工作,但性能不超过幼稚版本.由于天真的版本大约进行2N比较,因此应该更快地更快,而此版本进行3N/2比较. $ time ./findminmax_naive somelongs count: 1000000000 min: 0 max: 2147483647 real 0m24.156s user 0m4.956s sys 0m3.896s $ time ./findminmax_faster somelongs count: 1000000000 min: 0 max: 2147483647 real 0m25.048s user 0m6.948s sys 0m3.980s 这是"天真"版本: #include #include #include
22 2024-04-09
编程技术问答社区