这可能是一个非常基本的问题,但我没有太多使用 Linq,所以需要帮助。我想根据相关记录计数检索记录列表。
例如:
我有一个与“角色”实体具有 1:N 关系的联系实体。我想选择有
- 没有相关角色
- 只有 1 个相关角色
我如何使用 Linq 编写这个
from contact in context.ContactSet
where <contact.Roles has no records> -- ??
select contact;
请帮忙。
这可能是一个非常基本的问题,但我没有太多使用 Linq,所以需要帮助。我想根据相关记录计数检索记录列表。
例如:
我有一个与“角色”实体具有 1:N 关系的联系实体。我想选择有
我如何使用 Linq 编写这个
from contact in context.ContactSet
where <contact.Roles has no records> -- ??
select contact;
请帮忙。
您可以使用Count()
orAny()
方法
Count() - 返回序列中元素的数量。
Any() - 确定序列的任何元素是否满足条件。
查询语法
from contact in context.ContactSet
where contact.Roles.Count() == 0
select contact;
方法语法
context.ContactSet.Where(c=> c.Roles.Count() != 0));
查询语法
from contact in context.ContactSet
where !contact.Roles.Any()
select contact;
方法语法
context.ContactSet.Where(c=> !c.Roles.Any());
选择没有角色的联系人:
from contact in context.ContactSet
where !contact.Roles.Any()
select contact;
或者简单地说:
context.ContactSet.Where(c=> !c.Roles.Any());
选择分配了 n 个角色的联系人:
from contact in context.ContactSet
where contact.Roles.Count()==n
select contact;
或者简单地说:
context.ContactSet.Where(c=> c.Roles.Count()==n));
以下将选择Roles
集合中恰好有 0 或 1 个项目的所有联系人。根据收集的类型和数据访问技术,Count
财产可以通过一种方法,例如Count()
。(Count
也有重载,所以你可以有条件地计算项目,例如.Count(x => x.SomeProperty && !x.SomeOtherProperty)
from contact in context.ContactSet
where contact.Roles.Count <= 1
select contact;
您可以使用检查Count() <= 1
林克风格:
from contact in context.ContactSet
where contact.Roles.Count() <= 1
select contact;
方法风格:
context.ContactSet.Where(c => c.Roles.Count() <= 1);