通过两个值查找最大行LINQ

时间:2015-09-06 16:03:43

标签: c# linq

  ...

   <li class="350W">
        <input type="radio" name="motorpower" id="power2" class="motorpowerinput"/>
        <label for="power2" class="powerlabel">Brushless DC Motor rated at 350W</label>
   </li>

  ...

我需要获取具有最大值的Biggest ID,然后存储目标ID及其值。在上面的例子中,输出应该是(ID = 20,Value = 300)。我知道我可以使用Max,但似乎我不能使用&amp;&amp;检查两个值。

2 个答案:

答案 0 :(得分:1)

好像你需要使用OrderBy

var biggestByIdAndValue = values.OrderByDescending(x => x.Id)
                                .ThenByDescending(x => x.Value)
                                .FirstOrDefault();

答案 1 :(得分:1)

根据您使用的集合类型和集合的大小,使用这样的方法可能更好:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var fooList = new List<Foo>
        {
            new Foo { Id = 20, Value = 200 },
            new Foo { Id = 20, Value = 300 },
            new Foo { Id = 10, Value = 100 },
            new Foo { Id = 10, Value = 050 }
        };

        var maxId = fooList.Max(f => f.Id);
        var maxValue = fooList.Where(f => f.Id == maxId).Max(f => f.Value);

        Console.WriteLine("Max Id = {0}", maxId);
        Console.WriteLine("Max value = {0}", maxValue);
    }

    public class Foo
    {
        public int Id { get; set; }
        public int Value { get; set; }
    }
}

但是@ 2kay的方法可以在任何体面大小的集合上用于演示目的。