代码之家  ›  专栏  ›  技术社区  ›  Maestro1024

如何在linq查询中忽略空白元素

  •  3
  • Maestro1024  · 技术社区  · 16 年前

    如何在linq查询中忽略空白元素

    我有一个linq查询

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

    但是如果我到了这里,而且first\u name或last\u name是空的,那么我仍然要计算另一个数据项。

    3 回复  |  直到 16 年前
        1
  •  4
  •   David    16 年前
    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;
    

        2
  •  4
  •   Mark Byers    16 年前
        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);
        }
    
        3
  •  0
  •   Nick Craver    16 年前

    这是单语句风格的方法,但我发现马克的风格更简洁:

    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;