繁体   English   中英

带有if语句的where子句

[英]Where clause with if statement

大家好,并提前感谢,我对如何使用where子句与我需要执行的条件语句感到困惑。 我有两个信息网格,一个网格依赖于另一个网格来确定什么显示。 在第一个网格中,日期字段可以是日期,也可以说是从不。

第一个网格的数据是这样的:

ID       Date     Title
---      -----    ------
12       Never    Home
13       Never    School
14       Never    Work

第二个网格只显示三个中的一行,具体取决于Date字段的值,在本例中它应该是:

ID       Date     Title
---      -----    ------
12       Never    Home 

此信息被拉入我想要使用LINQ迭代的List中。 我想要实现的是:

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(); 
var record = myList.FirstOrDefault(m => !m.Date.Equals("Never"))
               ?? myList.FirstOrDefault();

即第一个不等于never或null,如果为null,则只是第一个(或null)。

你可能正在寻找这样的东西:

var record = myList.All(m => m.Date.Equals("Never")) 
               ? myList.FirstOrDefault() 
               : myList.FirstOrDefault(m => !m.Date.Equals("Never"));

有关.All()更多信息,请查看此MSDN帖子

由于您有两个规则,因此您需要在某处使用if条件。

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

return myList.All(x => x.Date == "Never") ? myList.FirstOrDefault() : myList.FirstOrDefault(x => x.Date != "Never");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM