Cannot compare elements of type 'System.Collections.Generic.ICollection`1 Only primitive types, enumeration types and entity types are supported
c#, entity-framework, linq
Solution
You can't compare a related table to `null` directly. Instead, compare against your foreign key member (assuming that `PrimaryTable` reference `RelatedTable` using a member called `RelatedTableId`.
sites.Where(s => s.RelatedTableId != null && s.RelatedTable.Any(
p => p.Name == param1.ToLower() && p.PolicyType == "primary"));
You may even be able to get away with removing the null check completely. Since this query is run against the database, you won't get a `NullReferenceException` and it may work. You'll have to double check on that though.
Problem
I have written this code ``` IQueryable<Site> sites = context.MainTable.Include("RelatedTable"); if (!string.IsNullOrEmpty(param1)) { sites = sites.Where(s => s.RelatedTable != null && s.RelatedTable.Any(p => p.Name == param1.ToLower() && p.PolicyType == "primary")); } foreach (string secondaryPolicy in secondaryPolicies) { sites = sites.Where(s => s.RelatedTable != null && s.RelatedTable.Any(p => p.Name == secondaryPolicy.ToLower() && p.PolicyType == "secondary")); } return sites.ToList(); ``` However at the `ToList` line I am getting the exception Cannot compare elements of type 'System.Collections.Generic.ICollection`1[[Project1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. Only primitive types, enumeration types and entity types are supported.