13

我有一个 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

4 回答 4

22

对于一场比赛:

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

对于许多匹配项,请使用persons.Where(condition). 还有许多只选择一个人的变体,例如 FirstOrDefault、First、Last、LastOrDefault 和 SingleOrDefault。每个都有略微不同的语义,具体取决于您到底想要什么。

于 2013-07-18T11:51:05.653 回答
7

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

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

如果要确保只有匹配项,可以使用单项。

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

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

于 2013-07-18T11:51:26.277 回答
0

这很简单。

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”

于 2013-07-18T12:10:45.723 回答
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();
于 2020-10-07T16:14:04.050 回答