// this will either find a single correct answer,
// or throw an exception if there are no correct answers
// or if there is more than one correct answer
var correct = answers.Single(a => a.Correct);
// this will either find a single correct answer,
// or return null if there are no correct answers,
// or throw an exception if there is more than one correct answer
var correct = answers.SingleOrDefault(a => a.Correct);
// 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();
8条答案
按热度按时间3yhwsihp1#
首先,如果有多个元素满足条件,
Single
将抛出异常;其次,您的条件应该只检查Correct
属性是否为true
;现在,您正在检查a
是否等于a.Correct
(甚至不会编译)。你也可以考虑使用
First
(如果没有这样的元素,它会抛出),或者FirstOrDefault
(如果没有这样的元素,它会返回null
作为引用类型),或者Where
后跟ToList
(它会返回满足条件的所有元素):9cbw7uwe2#
我假设你得到一个异常是因为Single,你的列表可能有不止一个答案被标记为正确,这就是为什么
Single
会抛出一个异常使用First,或FirstOrDefault();此外,如果你想获得所有项目的列表标记为正确的,你可以尝试:
如果您想要的结果是
Single
,那么您在查询中所犯的错误就是将一个项与bool值进行比较。语句中的错误,您的单查询应该是:
型
或简称为:
fivyi3re3#
你的表达式永远不会求值。
您正在将
a
与a
的属性进行比较。a
的类型是Answer。a.Correct
,我猜是一个布尔值。长格式:-
简称:-
oxalkeyp4#
如果
a.Correct
是正确答案的bool
标志,则需要。px9o7tmv5#
我想你是在找这个吧?
您可以通过键入以下内容来使用single:
zfciruhq6#
当然可以!
使用
FirstOrDefault()
选择符合条件的第一个对象:否则,使用
Where()
选择列表的子集:fykwrbwg7#
这里有几件事需要解决:
1.类声明中没有括号
1.将“正确”的属性设置为公共属性
1.然后进行选择
您的代码将如下所示
而这门课
68de4m5k8#
这将通过电子邮件选择每个唯一对象