如何忽略linq查询中的空白元素
我有一个linq查询
var usersInDatabase =
from user in licenseUserTable
where user.FirstName == first_name &&
user.LastName == last_name
select user;
但是如果我到这里并且first_name或last_name为空,那么我仍想评估其他数据项。
答案 0 :(得分:4)
var usersInDatabase =
from user in licenseUserTable
select user;
if (!string.IsNullOrEmpty(first_name)) {
usersInDatabase = usersInDatabase.Where(u => u.FirstName == first_name);
}
if (!string.IsNullOrEmpty(last_name)) {
usersInDatabase = usersInDatabase.Where(u => u.LastName == last_name);
}
答案 1 :(得分:4)
var usersInDatabase =
from user in licenseUserTable
where
(user.FirstName == first_name || first_name == string.Empty) &&
(user.LastName == last_name || last_name == string.Empty)
select user;
现在您将获得与给定名字匹配的记录,如果first_name为空,只要它与姓氏匹配,所有记录都匹配,除非last_name也是空白。现在唯一的问题是,如果first_name和last_name为空,那么你将获得所有内容。
答案 2 :(得分:0)
这是单一陈述式的方法,但我发现Mark的风格更清晰:
var usersInDatabase =
from user in licenseUserTable
where string.IsNullOrEmpty(first_name) || user.FirstName == first_name
where string.IsNullOrEmpty(last_name) || user.LastName == last_name
select user;