c# - Linq 根据对象属性从列表中选择对象

标签 c# linq

我有一个对象列表

class Answer
{
   bool correct;
}

List<Answer> Answers = new List<Answer>();

在 linq 中有没有一种方法可以让我根据对象的属性来选择对象?

目前为止

Answer answer = Answers.Single(a => a == a.Correct);

但是没有效果

最佳答案

首先,Single如果有多个元素满足条件,则抛出异常。其次,您的标准应该只检查 Correct 属性是否为 true。现在,您正在检查 a 是否等于 a.Correct(甚至不会编译)。

你应该使用 First (如果没有这样的元素将抛出)或FirstOrDefault (如果没有这样的元素,它将为引用类型返回 null):

// this will return the first correct answer,
// or throw an exception if there are no correct answers
var correct = answers.First(a => a.Correct); 

// this will return the first correct answer, 
// or null if there are no correct answers
var correct = answers.FirstOrDefault(a => a.Correct); 

// this will return a list containing all answers which are correct,
// or an empty list if there are no correct answers
var allCorrect = answers.Where(a => a.Correct).ToList();

关于c# - Linq 根据对象属性从列表中选择对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13230468/

相关文章:

.net - 从 Linq To Sql 中的匿名类型查询获取单个结果

c# - 将 IQueryable Where 与具有多个参数的表达式一起使用

c# - 不同类中的相同变量名,但一个可以为空

c# - 在 C# 中创建数据透视表

c# - 在 .NET 中按需下载和安装 dll 的最佳方式是什么?

c# - 类型的更短命名约定

C# - Form2 值到 Form1

c# - 获取字典中所有值的 Lambda 表达式

c# - 当我单击asp.net中gridview上的标题文本时如何对gridview进行排序

c# - 在构造函数中进行冗长的操作是否被认为是糟糕的设计?