大家好,提前谢谢,我对如何使用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();
答案 0 :(得分:8)
var record = myList.FirstOrDefault(m => !m.Date.Equals("Never"))
?? myList.FirstOrDefault();
即。第一个不等于never或null,如果为null,则只是第一个(或null)。
答案 1 :(得分:7)
你可能正在寻找这样的东西:
var record = myList.All(m => m.Date.Equals("Never"))
? myList.FirstOrDefault()
: myList.FirstOrDefault(m => !m.Date.Equals("Never"));
有关.All()
的更多信息,请查看this MSDN post。
答案 2 :(得分:-1)
由于您有两条规则,因此您需要在某处使用if条件。
我能想到的最简单的形式是这样的:
return myList.All(x => x.Date == "Never") ? myList.FirstOrDefault() : myList.FirstOrDefault(x => x.Date != "Never");