我有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。
我知道如何使用,但我不知道如何选择符合我条件的对象。
答案 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();