动态LINQ2Entities查询无法将IEnumerable转换为bool

时间:2014-10-22 11:31:53

标签: c# .net linq linq-to-entities

这里的建立和组织线给出了错误,他们无法隐式地将IEnumerable转换为bool。我错过了什么?在方法结束之前我不能使用贪婪的运算符。我确信它很简单,但我看不到它。

IQueryable<User> query = context.Users;

if (usvm.EstablishmentId > 0)
    query = query.Where(x => x.UserEstablishments
        .Where(y => y.UserEstablishmentId == usvm.EstablishmentId));

if (usvm.OrganisationId > 0)
    query = query.Where(x => x.UserEstablishments
        .Where(y => y.Establishment.OrganisationId == usvm.OrganisationId));

if (!String.IsNullOrEmpty(usvm.Forename))
    query = query.Where(x => x.Forename == usvm.Forename);

if (!String.IsNullOrEmpty(usvm.Surname))
    query = query.Where(x => x.Surname == usvm.Surname);

if (usvm.DOB != null)
    query = query.Where(x => x.DOB == usvm.DOB);

List<User> m = query.ToList();
return ToViewModel(m);

1 个答案:

答案 0 :(得分:4)

您可以使用Any方法:

if (usvm.EstablishmentId > 0)
    query = query.Where(x => x.UserEstablishments
        .Any(y => y.UserEstablishmentId == usvm.EstablishmentId));

if (usvm.OrganisationId > 0)
    query = query.Where(x => x.UserEstablishments
        .Any(y => y.Establishment.OrganisationId == usvm.OrganisationId));