使用linq选择与我的条件匹配的对象

时间:2013-07-18 11:50:18

标签: c# .net linq

我有Person类型列表,它有3个属性Id,Name,Age

var per1 = new Person((1, "John", 33);
var per2 = new Person((2, "Anna", 23);

var persons = new List<Person>();
persons.Add(per1);
persons.Add(per2);

使用linq我想选择与我的输入相匹配的年龄的人,例如33。

我知道如何使用,但我不知道如何选择符合我条件的对象。

4 个答案:

答案 0 :(得分:12)

一场比赛:

var match = persons.Single(p => your condition);

对于许多比赛,请使用persons.Where(condition)。选择一个人的方法也很多,例如FirstOrDefault,First,Last,LastOrDefault和SingleOrDefault。每个语义都有不同的语义,具体取决于你想要什么。

答案 1 :(得分:4)

您可以使用Enumerable.Where,它将返回所有匹配的元素集合。

var res = persons.Where(c=>c.AttributeName == 23);

如果您想确保只有匹配,可以使用单曲。

var res = persons.Single(c=>c.AttributeName == 23);

Single返回序列的唯一元素,如果序列中没有一个元素,则抛出异常。

答案 2 :(得分:1)

这很简单。

var per1 = new Person(1, "John", 33);
var per2 = new Person(2, "Anna", 23);
var persons = new List<Person>();
persons.Add(per1);
persons.Add(per2);
var sirec = persons.Select(x => x.age = 33);

试试这个并告诉我

注意:如果是单值,请使用“Single”而不是“Select”

答案 3 :(得分:0)

请看看这个。

if (model.Any(i => i.ParamKey == Key))
                    return model.Where(i => i.ParamKey == Key).First().ParamValue;

 if (model.Any(i => i.ParamKey == Key))
                        return model.Where(i => i.ParamKey == Key).First();