LINQ查询两个“OR”不工作

时间:2014-09-11 23:55:43

标签: c# linq

我试图从ActiveDirectory中选择数据,但我的LINQ查询无效。

DataServiceReference.Service1Client newService = new DataServiceReference.Service1Client();
            var query = from data in newService.GetAccounts()
                        where (data.SamAccountName.Contains(txtSearchBox.Text)
                        || data.GivenName.Contains(txtSearchBox.Text)
                        || data.EmailAddress.Contains(txtSearchBox.Text)) //2nd OR
                        select new { GivenName = data.SamAccountName, ID = data.ID };
            repSearchResult.DataSource = query;
            repSearchResult.DataBind();

当我尝试添加第二个||时,查询无效

The value for column 'EmailAddress' in table 'ActiveDirectory2' is DBNull.

但它有一个数据。

1 个答案:

答案 0 :(得分:3)

|| (data.EmailAddress == null || 
         data.EmailAddress.Any(em=> em.Contains(txtSearchBox.Text))))  //2nd OR

如果EmailAddress是一个集合,您应该检查它是否包含LIKE %searchText%

的任何元素

如果集合可以为null,则可以在查询之前添加条件,但如果它针对数据库运行则应该没问题。