选择最大年龄C#
回答
马克斯是用来寻找一个属性的最大值。获得最大值后,您可以使用Where子句选择其值匹配的对象。
var maxZ = list.Max(obj => obj.Z);
var maxObj = list.Where(obj => obj.Z == maxZ);
int maxAge = myList.Max(obj => obj.Z);
使用的参数是一个lambda快递离子。该表达式指示要使用哪个属性(在本例中为Z)来获取最大值。这将获得最大年龄。如果你想拥有最大年龄的对象,你可以按年龄排序,得到的第一个结果是:如果你做这种方式
MyType maxItem = myList.OrderByDescending(obj => obj.Z).First();
,注意,如果两个或多个项目都有最高年龄的,只其中之一被选中。
获得maxAge,但它不会告诉你哪个对象具有maxAge – AnthonyWJones 2009-09-28 20:15:03
,但是这将返回正确的X值? 我想检索最高的对象X – Killercode 2009-09-28 20:15:10
请注意,您将需要使用指令“using System.Linq;”在文件的顶部。 – 2009-09-28 20:16:48
这将在很大程度上取决于X的类型,如果是可比的:
var array = new[] {
new { X = "a", Y = "a", Z = 1 },
new { X = "b", Y = "b", Z = 2 }
};
var max = array.Max(x => x.Z);
Console.WriteLine(max);
要获得最大的Z值的对象,你的排序按降序排列,并得到第一个项目的Z值:
TypeOfObject oldest = list.OrderByDescending(x => x.Z).First();
编辑:
改成了使用IEnumerable.OrderByDescending方法而不是List.Sort。
编辑2:
如果你想表现,这比最快的LINQ解决方案快大约四倍:
int high = Int32.MinValue;
List<TypeOfObject> highest = new List<TypeOfObject>();
foreach (TypeOfObject v in list) {
if (v.Z >= high) {
if (v.Z > high) highest.Clear();
high = v.Z;
highest.Add(v);
}
}
+1,可选:list.OrderByDescending(x => x.Z).First() – user7116 2009-09-28 20:20:55
这里有几个问题。首先,排序最多为O(nlogn),其中查找最大值和提取匹配元素都是O(n)。其次,这只会给你第一场比赛。没关系,如果这些值是唯一的,或者您只关心获取任何匹配元素,但是如果您需要所有匹配元素,则仍然必须找到最大值,然后提取匹配项。 – tvanfosson 2009-09-28 20:21:20
@sixlettervariables:是的,我知道它在那里,但它没有出现在'List
如果可以实现既沿着这些路线上你的类IComparable<T>
或IComparable
:
public Int32 CompareTo(MyClass other) {
return Z.CompareTo(other.Z);
}
您只需致电(需要using System.Linq
)即可获得最大价值:
MyClass maxObject = list.Max();
这将只对您的值列表执行一次传递。
- 1. 从MySQL选择年龄和
- 2. 选择查询 - 获取两个年龄最小和最大年龄之间的所有数据
- 3. 最大年龄必须大于最小年龄通过使用jquery
- 4. 获取年龄=无穷大,同时试图获得最小和最大年龄
- 5. 选择HEX(名称||年龄)为X年龄从ORDER BY X
- 6. 数据注释,不显眼的验证。最小年龄,最大年龄
- 7. Express未设置最大年龄头
- 8. 显示姓名和年龄最大
- 9. 最大年龄与nginx /乘客/ memcached/rails2.3.5
- 10. 使用最大年龄请求标头
- 11. 缓存控制:最大年龄设置
- 12. 刚开误差最大年龄表
- 13. Web形式中的Cookie最大年龄
- 14. MySQL的选择了结年龄
- 15. 日期选择单位计算年龄
- 16. 按年龄和性别选择
- 17. MYSQL根据年龄选择生日
- 18. 选择年龄和表查询的最早日期
- 19. 过期,最大年龄和共享最大年龄之间的区别是什么?
- 20. c#,建立sql来选择一个年龄范围的用户
- 21. Grails:JAWR插件设置20年的最大年龄标头
- 22. 年龄选择不带数组的选择框?
- 23. 年龄最佳算法?
- 24. 删除年龄大于特定年龄的文件夹
- 25. jQuery筛选年龄在
- 26. 如何使用datepicker设置最小最大年龄限制android
- 27. C#网页的年龄?
- 28. 在SQL中计算年龄年龄
- 29. 如何设置我的年份选择器读取当年的最大年份
- 30. 如何选择小于或大于从grails和groovy下拉的年龄
@ csharptest.net:请重新设置您的答案,LINQ并不总是最好的答案,如果列表很大,您的击败LINQ答案。 – AnthonyWJones 2009-09-28 20:19:33