首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带if语句的Where子句

带if语句的Where子句
EN

Stack Overflow用户
提问于 2014-12-12 16:13:14
回答 3查看 527关注 0票数 3

大家好,提前谢谢,我很难理解如何在需要执行的条件语句中使用where子句。我有两个信息网格,一个网格依赖于另一个网格来决定显示什么。在第一个网格中,日期字段可以是日期,也可以说永远不会。

第一个网格的数据如下所示:

代码语言:javascript
复制
ID       Date     Title
---      -----    ------
12       Never    Home
13       Never    School
14       Never    Work

根据日期字段的值,第二个网格将只显示三行中的一行,在本例中应该是:

代码语言:javascript
复制
ID       Date     Title
---      -----    ------
12       Never    Home 

此信息被拖到我想要使用LINQ迭代的列表中。我想要实现的是:

代码语言:javascript
复制
If(All Date values == 'Never') 
    Then pull the first one (12)
else
    if(Date has value)
         then pull the first that has a date

myList.Where(??what goes here??).Select(t => t).FirstOrDefault(); 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-12 16:15:51

你可能在找这样的东西:

代码语言:javascript
复制
var record = myList.All(m => m.Date.Equals("Never")) 
               ? myList.FirstOrDefault() 
               : myList.FirstOrDefault(m => !m.Date.Equals("Never"));

关于.All()的更多信息,请看一下这个MSDN帖子

票数 7
EN

Stack Overflow用户

发布于 2014-12-12 16:18:39

代码语言:javascript
复制
var record = myList.FirstOrDefault(m => !m.Date.Equals("Never"))
               ?? myList.FirstOrDefault();

也就是说,第一个不等于从不或空的,如果是空的,只等于第一个(或空)。

票数 8
EN

Stack Overflow用户

发布于 2014-12-12 16:24:01

因为您有两条规则,所以在某个地方需要一个if条件。

我能想到的最简单的形式是这样的:

代码语言:javascript
复制
return myList.All(x => x.Date == "Never") ? myList.FirstOrDefault() : myList.FirstOrDefault(x => x.Date != "Never");
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27447645

复制
相关文章

相似问题

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