相关疑难解决方法(0)

如何使用LINQ选择具有最小或最大属性值的对象

我有一个具有Nullable DateOfBirth属性的Person对象.有没有办法使用LINQ查询具有最早/最小DateOfBirth值的Person对象列表.

这是我开始的:

var firstBornDate = People.Min(p => p.DateOfBirth.GetValueOrDefault(DateTime.MaxValue));
Run Code Online (Sandbox Code Playgroud)

Null DateOfBirth值设置为DateTime.MaxValue,以便将它们排除在Min考虑范围之外(假设至少有一个具有指定的DOB).

但对我来说,所有这一切都是将firstBornDate设置为DateTime值.我想得到的是与之匹配的Person对象.我是否需要编写第二个查询:

var firstBorn = People.Single(p=> (p.DateOfBirth ?? DateTime.MaxValue) == firstBornDate);
Run Code Online (Sandbox Code Playgroud)

或者有更简洁的方法吗?

.net c# linq

437
推荐指数
8
解决办法
24万
查看次数

LINQ:如何对集合中所有对象的属性执行.Max()并返回具有最大值的对象

我有一个具有两个int属性的对象列表.该列表是另一个linq查询的输出.物体:

public class DimensionPair  
{
    public int Height { get; set; }
    public int Width { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想找到并返回列表中具有最大Height属性值的对象.

我可以设法获得值的最高值,Height但不能获得对象本身.

我可以用Linq做到这一点吗?怎么样?

c# linq object max

264
推荐指数
5
解决办法
35万
查看次数

如何让LINQ返回集合中具有最大值的对象的索引?

我有一个不可变对象列表(在我的特定情况下是一个列表Tuple<double, double>),我想更改具有最高Item2值的那个.

理想情况下会有一个我可以使用的IndexOfMaxBy函数,所以我可以这样做:

var indexOfPointWithHighestItem2 = myList.IndexOfMaxBy(x => x.Item2);

var original = myList[indexOfPointWithHighestItem2];

myList[indexOfPointWithHighestItem2] = 
  new Tuple<double, double>(original.Item1, original.Item2 - 1);
Run Code Online (Sandbox Code Playgroud)

我已经看到如何让LINQ返回具有给定属性的最大值的对象?,并使用Jon Skeet的MaxBy功能与Select我可以做到:

var indexOfPointWithHighestItem2 = 
  myList.Select((x, i) => new { Index = i, Value = x })
        .MaxBy(x => x.Item2).Index;
Run Code Online (Sandbox Code Playgroud)

但是这会为我列表中的每个对象创建一个新对象,并且必须有一个更简洁的方法.有没有人有任何好的建议?

c# linq linq-to-objects

4
推荐指数
2
解决办法
2348
查看次数

C#查找字符串数组列表中的元素

我现在几个小时都无法解决问题.这是一个简化的场景.假设有一个人的列表与他们的出价.我正在尝试找一个出价最高的人并返回名字.我能找到最高出价,但如何输出名称?

        List<String[]> list = new List<String[]>();
        String[] Bob = { "Alice", "19.15" };
        String[] Alice = {"Bob", "28.20"};
        String[] Michael = { "Michael", "25.12" };

        list.Add(Bob);
        list.Add(Alice);
        list.Add(Michael);

        String result = list.Max(s => Double.Parse(s.ElementAt(1))).ToString();

        System.Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)

结果我得到28.20,这是正确的,但我需要显示"Bob".list.Select()有很多组合,但没有成功.有人请?

c#

4
推荐指数
3
解决办法
6037
查看次数

查找自定义类型列表的最大计数

我有一个模拟应用程序,其中继承链等 Employee,Manager,President.

Employee类看起来像

class Employee
    {
        public int EmployeeId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime HireDate { get; set; }

        public Employee() 
        { 
        }
    }
Run Code Online (Sandbox Code Playgroud)

和Manager类看起来像

 class Manager : Employee
    {

        private List<Employee> employeesManaged = new List<Employee>();
        public List<Employee> EmployeesManaged
        {
            get { return employeesManaged; }
            set { employeesManaged = value; }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想编写一个方法来查找管理大多数员工的经理(其EmployeesManaged.Count属性是最大的).我目前有两个问题.

  1. 正如您在下面的代码中看到的,我必须手动将每个Manager添加到List变量中.这不是一个长期的解决方案.解决这个问题的有效,简洁的方式是什么?

  2. 我的Linq语法不正确.

我认为第一个问题是最紧迫的.如果有1000个Employee对象,我将如何规避将每个对象添加到列表中?

 public static Manager  GetBestManager(List<Manager> managerList)
        {
            Manager …
Run Code Online (Sandbox Code Playgroud)

c# linq asp.net

1
推荐指数
1
解决办法
5416
查看次数

标签 统计

c# ×5

linq ×4

.net ×1

asp.net ×1

linq-to-objects ×1

max ×1

object ×1