首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DefaultIfEmpty与FirstOrDefault的结合使用

DefaultIfEmpty与FirstOrDefault的结合使用
EN

Stack Overflow用户
提问于 2017-02-07 16:10:51
回答 3查看 694关注 0票数 1

我有这个代码

代码语言:javascript
复制
List<int> input = new List<int>() { 1, 2, 3 };
int output = input.DefaultIfEmpty(-5).FirstOrDefault(x => x == 4);

它告诉我“如果没有匹配,请使用值-5”

为什么返回此代码0

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-07 16:14:16

input为空时,您的代码将返回-5

你想做的是

代码语言:javascript
复制
List<int> input = new List<int>() { 1, 2, 3 };
int output = input.Where(x => x == 4).DefaultIfEmpty(-5).FirstOrDefault();

但是,您可以按照Dmitry Bychenko's answer中的说明对其进行简化。

票数 3
EN

Stack Overflow用户

发布于 2017-02-07 16:13:55

如果您希望使用4如果input中有Any 4,否则使用-5

代码语言:javascript
复制
List<int> input = new List<int>() { 1, 2, 3 };
int output = input.Any(x => x == 4) ? 4 : -5;
票数 2
EN

Stack Overflow用户

发布于 2017-02-07 16:16:38

我认为问题在于你仍然得到了一个值。试试这个:

代码语言:javascript
复制
int output = input.Where(x => x == 4).DefaultIfEmpty(-5).FirstOrDefault();

希望它能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42084729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档