我有一个具有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)
或者有更简洁的方法吗?
我有一个具有两个int属性的对象列表.该列表是另一个linq查询的输出.物体:
public class DimensionPair
{
public int Height { get; set; }
public int Width { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想找到并返回列表中具有最大Height属性值的对象.
我可以设法获得值的最高值,Height但不能获得对象本身.
我可以用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)
但是这会为我列表中的每个对象创建一个新对象,并且必须有一个更简洁的方法.有没有人有任何好的建议?
我现在几个小时都无法解决问题.这是一个简化的场景.假设有一个人的列表与他们的出价.我正在尝试找一个出价最高的人并返回名字.我能找到最高出价,但如何输出名称?
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()有很多组合,但没有成功.有人请?
我有一个模拟应用程序,其中继承链等
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属性是最大的).我目前有两个问题.
正如您在下面的代码中看到的,我必须手动将每个Manager添加到List变量中.这不是一个长期的解决方案.解决这个问题的有效,简洁的方式是什么?
我的Linq语法不正确.
我认为第一个问题是最紧迫的.如果有1000个Employee对象,我将如何规避将每个对象添加到列表中?
public static Manager GetBestManager(List<Manager> managerList)
{
Manager …Run Code Online (Sandbox Code Playgroud)