我使用C#.NETLINQ WHERE使用if语句
我有两个文本框,如果它!空需要一个LINQ查询中的WHERE子句的一部分条款。
这里是我的代码
var result = from a in xxxx select a;
if(!string.IsNullOrEmpty(personName))
{
return result.Where(a >= a.forename.Contains(personName) || a.surname.Contains(personName)
}
else if(!string.IsNullOrEmpty(dateFrom))
{
return result.Where(a >= a.appStartDateTime >= dateFrom.Date)
}
else if(!string.IsNullOrEmpty(personName) && !string.IsNullOrEmpty(dateFrom))
{
return result.Where(a >= a.forename.Contains(personName) || a.surname.Contains(personName) && a.appStartDateTime >= dateFrom.Date);
}
我认为这会工作,但它不喜欢的。哪里,我不能访问“A”例如a.forename(名称“一个”不在当前的情况下存在)
我该怎么做,或者实际上不能做到这一点?
在此先感谢您的帮助。
克莱尔
如果你将永远不会碰到最后的其他人。如果最后一个如果将是真的,那么第一个如果是真的。所以你不能到最后一个。 – 2009-09-30 12:40:28
我现在把它们变成了所有if语句。 – ClareBear 2009-09-30 13:43:25
@ClareBear如果他们仍然有返回语句在他们那么它不会帮助。你将永远不会碰到检查两个条件的最后一条if语句。你仍然只会从第一个返回。我也会重新排序它们,以便personName && dateFrom的检查不为空或空的检查首先发生。 – 2009-09-30 13:49:25