2010-03-23 90 views
3

如何忽略LINQ查詢空白元如何忽略LINQ查詢空白元

我有一個LINQ查詢

  var usersInDatabase = 
      from user in licenseUserTable 
      where user.FirstName == first_name && 
      user.LastName == last_name 
      select user; 

但如果我在這裏和FIRST_NAME或姓氏是空白的話,我想仍然評估其他數據項。

回答

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是空的,只要所有將匹配,因爲它也匹配的姓氏,除非姓氏是空白的,以及記錄。現在唯一的問題是,如果first_name和last_name是空白的,你會得到一切。

+0

相反FIRST_NAME的==的String.Empty,你也許也使用String.IsNullOrEmpty(FIRST_NAME)。 – 2010-03-23 13:37:14

+0

我打算說,但我不相信string.IsNullOrEmpty在LINQ中有效。它在Entity框架中工作。 – David 2010-03-23 13:39:05

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); 
    } 
0

這是單語句式的做法,但我覺得馬克的風格更清潔:

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;