【问题标题】:Get the first and second objects from a list using LINQ [duplicate]使用 LINQ 从列表中获取第一个和第二个对象 [重复]
【发布时间】:2014-06-05 09:21:13
【问题描述】:

我有一个Person 对象列表。如何使用LINQList<Person> People获取满足特定条件的第一个和第二个Person对象?

假设这是我的清单。我怎样才能得到詹姆斯和朱迪超过 18 岁的第一和第二人。

public class Person
{
    public string Name;
    public int age;
}

var People = new List<Person>
{
   new Person {Name = "Jack", Age = 15},
   new Person {Name = "James" , Age = 19},
   new Person {Name = "John" , Age = 14},
   new Person {Name = "Jodie" , Age = 21},
   new Person {Name = "Jessie" , Age = 19}
}

【问题讨论】:

  • @Red-arrower!红色箭头太可笑了!说实话,我一点也不在乎名誉。我来这里只是为了询问和学习:)

标签: c# linq list


【解决方案1】:
var topTwo = People.Where(a => a.Age > 18).Take(2).ToArray();

Person p1, p2;
if (topTwo.Any())
{
   p1 = topTwo[0];
   if (topTwo.Count > 1)
       p2 = topTwo[1];
}

【讨论】:

  • @PaulB 你肯定是正确的
  • @DavidPilkington 谢谢大卫,我能从两个不同的变量中得到答案吗? p1 和 p2?
  • @Vahid 我已经更新了我的答案
【解决方案2】:

您可以在此处使用“Take()”函数。

在您的情况下,以下代码将获取前 2 个元素:

public class Person
{
    public string Name;
    public int age;
}

var People = new List<Person>
{
    new Person {Name = "Jack", Age = 15},
    new Person {Name = "James" , Age = 19},
    new Person {Name = "John" , Age = 14},
    new Person {Name = "Jodie" , Age = 21},
    new Person {Name = "Jessie" , Age = 19}
}

People.Take(2);

以下代码将为您提供年龄为 18 岁的前 2 个元素:

public class Person
{
    public string Name;
    public int age;
}

var People = new List<Person>
{
    new Person {Name = "Jack", Age = 15},
    new Person {Name = "James" , Age = 19},
    new Person {Name = "John" , Age = 14},
    new Person {Name = "Jodie" , Age = 21},
    new Person {Name = "Jessie" , Age = 19}
}

People.Where(x => x.Age > 18).Take(2);

【讨论】:

    【解决方案3】:
    var firstTwo = People.Where(a => a.Age > 18).Take(2);
    

    【讨论】:

    • 这与@David Pilkington 之前发布的答案不一样。
    猜你喜欢
    • 2015-01-18
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2016-07-27
    • 1970-01-01
    • 2019-11-26
    相关资源
    最近更新 更多